Skip to main content
 首页 » 编程设计

python之使用pyclutter编程

2025年05月04日10kenshinobiy

我不熟悉 clutter(和 pyclutter)。我一直在尝试使用 pyclutter。到目前为止,我还没有找到任何好的教程。我的意思是没有什么能真正正确解释。我看到了几个示例程序,但是当我尝试使用 pyclutter 时,我没有得到任何好的结果。这些命令是可修改的,但它们的正确使用是导致问题的原因。我尝试使用 pyclutter 渲染一条线,但我什至没能做到。我的代码:

import clutter 
from clutter import cogl 
 
stage = clutter.Stage() 
stage.set_size(400, 400) 
 
label = clutter.Text() 
label.set_text("line") 
 
stage.add(label) 
 
clutter.cogl.set_source_color4ub (255,0,0,255) 
clutter.cogl.path_line(100,100,200,200) 
clutter.cogl.path_stroke() 
 
stage.show_all() 
stage.connect("destroy",clutter.main_quit) 
clutter.main() 

我的错误可能真的很愚蠢,但如果有人能给我指出一个好的教程,我可以从中学习杂乱 (pyclutter),我将不胜感激。

请您参考如下方法:

这行不通,因为 cogl 是使用 OpenGL 的抽象。在 OpenGL 世界中,必须为每一帧绘制。这意味着,您的代码将只执行一次,一旦窗口翻转,您就看不到该行。 您可以为此创建一个自定义 actor,并将您的指令放入 do_paint() 方法中:

class MyDrawing(clutter.Actor): 
    __gtype_name__ = 'MyDrawing' 
    def do_paint(self): 
        clutter.cogl.set_source_color4ub (255,0,0,255) 
        clutter.cogl.path_line(100,100,200,200) 
        clutter.cogl.path_stroke() 

然后,在您的示例中像文本 Actor 一样使用它:

stage.add(MyDrawing())