2013-10-10 139 views
0

我的Python代碼:使用Python的ctypes調用gtk_builder

gtk = CDLL('/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so') 
builder = gtk.gtk_builder_new() 
print gtk.gtk_builder_add_from_file(builder, './mainui.glade', None) 

我測試的C代碼,它的工作原理。但對於python ctype,gtk_builder_add_from_file的結果始終爲0,例如出現錯誤。我很困惑..

回答

1

你爲什麼不使用內省功能?有一個原因存在。

from gi.repository import Gtk as gtk 

class Foo (object): 

    def __init__(self): 
     self.builder = gtk.Builder() 
     self.builder.add_from_file("someui.glade") 
     self.builder.connect_signals(self) 

    def run(self, *args): 
     self.builder.get_object("mainwindow").show() 
     gtk.main() 

    def quit(self, *args): 
     gtk.main_quit() 


Foo().run() 

,如果這是不是一種選擇,通過的GError **,而不是沒有得到關於該問題的一些詳細信息(可能是您的*.glade文件或缺少權限)

+0

感謝您的幫助,但我想在ARM上運行此代碼,交叉編譯gi實在太難了。 – user2867776

+0

這不是,只是使用類似buildroot的東西 - 手動交叉編譯只是PITA。 – drahnr