Python 无法使pygobject使用绘图区域

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

一般来说,我已经成功地使用了Gtk3系统:窗口、盒子、网格、信号处理程序等。但是,无论我做什么尝试,我都无法让DrawingArea小部件正常工作。我怀疑我的设置有问题,但不知道如何检查。下面是一个实际可行的简单示例:

#!/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以使示例代码正常工作。谢谢,这改变了一切,我更新了另一个问题的解决方案。