通常,我已經成功地使用了Gtk3系統:Windows,框,網格,信號處理程序等。但是,無論我嘗試什麼,我都無法使用DrawingArea小部件來工作。我懷疑我的設置有問題,但不知道如何檢查。這是一個最基本的例子,真正應該工作:無法讓pygobject使用繪圖區域
#!/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
我使用Ubuntu 12.04和Python 3.2。我懷疑我的安裝有問題,但是什麼?我試過重新安裝python-gi-cairo。
感謝您的任何想法,
邁克
謝謝Havok。如你所說,它與2.7一起工作。我安裝了python3-cairo軟件包,但沒有幫助它在3.2中運行。如果我找到解決方案,我會發布它。 – Mike
使用Cairo for Python 3.x時還存在其他小問題,請查看http://stackoverflow.com/a/10547095/439494,以便爲您提供更多的建議。 – Havok
Gabriel Brunne給出瞭解決方案,您需要安裝** python3-gi-cairo **以使示例代碼正常工作。 – Havok