Python 无法使pygobject使用绘图区域
一般来说,我已经成功地使用了Gtk3系统:窗口、盒子、网格、信号处理程序等。但是,无论我做什么尝试,我都无法让DrawingArea小部件正常工作。我怀疑我的设置有问题,但不知道如何检查。下面是一个实际可行的简单示例:Python 无法使pygobject使用绘图区域,python,pygobject,Python,Pygobject,一般来说,我已经成功地使用了Gtk3系统:窗口、盒子、网格、信号处理程序等。但是,无论我做什么尝试,我都无法让DrawingArea小部件正常工作。我怀疑我的设置有问题,但不知道如何检查。下面是一个实际可行的简单示例: #!/usr/bin/env python3 from gi.repository import Gtk, Gdk class MyExample(object): def __init__(self, user_data=None): window = Gt
#!/usr/bin/env python3
from gi.repository import Gtk, Gdk
class MyExample(object):
def __init__(self, user_data=None):
window = Gtk.Window()
window.connect("destroy", Gtk.main_quit)
drawing_area = Gtk.DrawingArea()
drawing_area.set_size_request(300,300)
drawing_area.connect('draw',self.expose)
window.add(drawing_area)
window.show_all()
def expose(self,widget,cr,data):
print ("self_exposed")
# ===
if __name__ == "__main__":
app = MyExample()
Gtk.main()
当我运行它时,会出现以下错误:
Exception TypeError: TypeError("Couldn't find conversion for foreign struct
'cairo.Context'",) in <module 'threading' from '/usr/lib/python3.2/threading.py'>
ignored
异常TypeError:TypeError(“找不到外部结构的转换
“cairo.Context”中的
忽略
我正在使用Ubuntu 12.04和Python 3.2。我怀疑我的安装有问题,但是什么?我已尝试重新安装python gi cairo
谢谢你的建议
迈克在这里检查我的答案:
您需要安装python3 gi cairo软件包。使用Gtk+3和python3时,似乎永远不会发送“draw”信号。我想不出来,但这真的让我的项目扫兴,非常令人沮丧。我也遇到了类似的问题,因为我尝试了python3 cairo软件包,但没有取得任何积极的结果 然而,安装python3gicairo包为我解决了这个问题 在我的例子中,在Ubuntu 12.04下,$sudo apt-get-install-python3-gi-cairo 在一个终端中完成了这项任务,让我摆脱了恼人的“找不到外部结构'cairo.Context'的转换”消息 它可能也适用于其他Ubuntu版本,也许也适用于Debian 其他发行版可能也有类似的软件包,但我不能在这方面提供太多帮助
希望我能帮上忙。谢谢。正如你所说,它与2.7兼容。我安装了python3cairo包,但这无助于它在3.2中运行。如果我找到了解决方案,我会发布它。在使用Cairo for Python 3.x时,还有其他一些小问题,请检查此项,以便为您提供更多想法。Gabriel Brunne给出了解决方案,您需要安装python3 gi Cairo以使示例代码正常工作。谢谢,这改变了一切,我更新了另一个问题的解决方案。