2012-07-02 42 views
3

通常,我已經成功地使用了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。

感謝您的任何想法,

邁克

回答

3

這裏查看我的回答:

Drawing in PyGobject (python3)

你需要安裝python3-GI-開羅包。

+0

謝謝Havok。如你所說,它與2.7一起工作。我安裝了python3-cairo軟件包,但沒有幫助它在3.2中運行。如果我找到解決方案,我會發布它。 – Mike

+0

使用Cairo for Python 3.x時還存在其他小問題,請查看http://stackoverflow.com/a/10547095/439494,以便爲您提供更多的建議。 – Havok

+0

Gabriel Brunne給出瞭解決方案,您需要安裝** python3-gi-cairo **以使示例代碼正常工作。 – Havok

1

似乎在使用Gtk + 3和Python 3時,「繪製」信號永遠不會被髮送。我無法弄清楚它的真實性,但它確實會對我的項目造成阻礙,令人非常沮喪。

1

我遇到過類似的問題,試過python3-cairo軟件包沒有出現正面結果。

但是,安裝python3-gi-cairo包解決了我的問題。

在我的情況下,Ubuntu的12.04下,$ sudo易於得到安裝python3-GI-開羅 在終端的伎倆,讓我擺脫了惱人「的找不到外國結構轉換'cairo.Context'「消息。

它會problably也對其他的Ubuntu版本的工作,也許在Debian以及...

其他發行版可能有類似的軟件包,但我不能在此提供了很大幫助。

希望我一直在幫助。

+0

謝謝,這改變了一切,我更新了另一個問題的解決方案。 – Havok

+0

不客氣。 –