2017-05-20 4 views
0

Hallo bei der Erstellung mehrerer Objekte in pygtk Anwendung, Rückkehr einige dieser Aufgabe fordern, dass sie nicht initialisiert werden beim Passieren auf Signale dort Inhalt (der Wert der Feststellung sind showen korrekt in der Anwendung)PyGTK Objekt nicht initialisierten

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() 

zuerst dachte ich, dass die Variablen in ihrem Umfang nicht sind, aber sie waren (ich habe mehrere Objekte geprüft und ihnen die letzten 3 Zeilen arbeiten

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

Ohne Zeilennummern in Ihrem Code ist es schwierig, die Fehlermeldung auf das eigentliche Programm zu beziehen (z. B. Zeile 70 ist wo?). Versuchen Sie, ein funktionierendes (minimales Beispiel. – jcoppens

+0

Ich habe die 70 Zeile mit einem Pfeil markiert, um die problematische Anweisung zu sehen, die enter_callback Funktion wird abgestreift, nur um die Argumente Werte def enter_callback (self, widget, Abschnitt, optionlabel) : \t # config.set (Abschnitt, option, Option) \t save_button_enable (True) \t print "s Eintrag% vom Inhalt Abschnitt% s hat:% s \ n" % (option, Abschnitt, widget.get_text()) Der Wert im Eingabefeld ist korrekt, aber beim Aufruf einer Aktivierung nach der Änderung wird zurückgegeben (Keine) –

Antwort

0

Für diesen einen denke ich, müssen Sie möglicherweise in der Gtk aussehen Systembibliothek selbst.

(Der Quellcode, der zur Erstellung der Dateien ".so", ".dll" oder ".dylib" verwendet wird, die über die Routinen verfügen, auf die Ihr Python-Programm zugreift).

Sie können den Inhalt solcher Binärdateien mit Befehlen wie "Strings", "nm" und "objdump" suchen.

Aber basierend auf der Art des Fehlers sieht es so aus, als würde die Korrektur im Quellcode der Bibliothek selbst vorgenommen, nicht im Python-Programm.

Sorry, ich kann nicht mehr Details als das geben.