2017-05-20 32 views
0

您好,調用一些這些對象返回它們未初始化的傳遞有內容時,信號(注意在應用程序正確showen的值)PyGTK的創建在pygtk的應用程序的多個對象中的對象的未初始化

sections = config.sections() 
for section in sections: 
    box= gtk.Table (3,len(config.options(section)),False) 
    box.set_col_spacings(2) 
    box.set_row_spacings(2) 
    box.show() 
    label = gtk.Label(section) 
    label.show() 
    notebook.append_page (box,label) 
    for i,option in enumerate(config.options(section)): 
     optionlabel = gtk.Label(option) 
     optionvalue = gtk.Entry() 
     optionvalue.set_text(config.get(section,option)) 
    --> optionvalue.connect("activate", enter_callback,optionvalue, label, optionlabel) 
     box.attach(optionlabel,0,1,i,i+1,xoptions=gtk.SHRINK|gtk.FILL,yoptions=gtk.SHRINK) 
     box.attach(optionvalue,1,2,i,i+1,yoptions=gtk.SHRINK) 
    box.show_all() 

起初我以爲變量不在範圍,但他們(我測試過幾個對象,發現他們工作的最後3行

Linuxcnc ini.py:70: GtkWarning: IA__gtk_entry_get_text: assertion "GTK_IS_ENTRY (entry) failed 
    print (widget.get_text()) 
None 
<gtk.Label object at 0x9f44a54 (uninitialized at 0x0)> 
<gtk.Label object at 0x9f44c0c (uninitialized at 0x0)> 
0 
<gtk.Label object at 0x9f4c8ec (GtkLabel at 0xa1a3350)> 
<gtk.Label object at 0x9f4dc0c (GtkLabel at 0xa1a3450)> 
+0

代碼中沒有行號,很難將錯誤信息與實際程序聯繫起來(例如第70行是在哪裏?)。嘗試提供一個工作(最小的例子) – jcoppens

+0

我用箭頭標記了70行以查看有問題的指令,僅刪除了enter_callback函數以打印參數值 def enter_callback(self,widget,section,optionlabel) : \t#config.set(部,optionlabel,optionvalue) \t save_button_enable(真) \t打印 「項%從截面%S S具有內容:%S \ n」 個%(optionlabel,部分,widget.get_text() ) 輸入字段中的值是正確的,但在更改後調用激活時返回(無) –

回答

0

對於這個我想你可能需要在GTK來看看系統庫本身。

(用於生成「.so」,「.dll」或「.dylib」文件的源代碼,具有Python程序正在訪問的例程)。

您可以使用「strings」,「nm」和「objdump」等命令來查看這些二進制文件的內容。

但基於錯誤的性質,它看起來像修復將在庫本身的源代碼中完成,而不是Python程序。

對不起,我不能給予更多的細節。