使用pyclutter编程

2 投票
1 回答
505 浏览
提问于 2025-04-16 11:45

我刚接触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()

可能我犯的错误真的很简单,但如果有人能推荐一个好的教程,让我能从头学会clutter(pyclutter),我会非常感激。

1 个回答

1

这个方法是行不通的,因为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()

然后,就像使用文本演员一样在你的示例中使用它:

stage.add(MyDrawing())

撰写回答