Tkinter listbox erhalten Attributfehler

Ich habe meinen Kopf gegen eine Wand geschlagen. Nur die Seile von Tkinter zu bekommen, folgte ein Tutorial, um die Grundlagen zu bekommen, jetzt arbeiten wir vor, um meine eigenen Sachen zu implementieren. Ich schaffe eine Abfrage-Schnittstelle für einige Arbeit, die ich tue. Ich habe drei Listenfelder auf dem Bildschirm, und ich muss die Auswahl von allen drei auf Knopf klicken, also kann ich eine Abfrage erzeugen und einige Daten anzeigen.

Der Fehler, den ich empfange, scheint zu sagen, dass es mapLBox nicht sehen mapLBox , was ein Bereichsproblem anzeigt. Wenn ich den Code auf etwas einfaches wie print self.mapLBox.get(Tkinter.ACTIVE) , wird es immer noch den gleichen Attributfehler print self.mapLBox.get(Tkinter.ACTIVE) . Alle Boxen und Scrollbars zeichnen sich richtig auf den Bildschirm, und mit der falschen Linie (# 90) kommentiert, läuft es gut.

Es gibt zwei Klassen, simpleApp_tk ( PasteBin ), zu dem alle untergeordneten Code gehört, und dbtools die Abfragen auf dem DB dbtools und Ergebnisse zurückgibt.

Der Fehler:

 Exception in Tkinter callback Traceback (most recent call last): File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1473, in __call__ return self.func(*args) File "test.py", line 90, in OnButtonClick self.labelVar.set(self.mapLBox.get(self.mapLBox.curselection()[0])) File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1829, in __getattr__ return getattr(self.tk, attr) AttributeError: mapLBox 

Innerhalb meiner initialise (laufen von __init__ ) werden die Listen und die Schaltfläche erstellt:

 button = Tkinter.Button(self,text=u"Click Me",command=self.OnButtonClick) button.grid(column=1,row=0) # Make a scrollbar for the maps list scrollbar2 = Tkinter.Scrollbar(self,orient=Tkinter.VERTICAL) scrollbar2.grid(column=2,row=2,sticky='EW') # Create list of maps mapLBox = Tkinter.Listbox(self,selectmode=Tkinter.SINGLE,exportselection=0, yscrollcommand=scrollbar2.set) scrollbar2.config(command=mapLBox.yview) mapLBox.grid(column=2,row=2,sticky='EW') # Populate map list nameList = self.db.getMapNameList() IDList = self.db.getMapIDList() for count, name in enumerate(nameList): nameFormat = str(IDList[count][0])+': '+name[0] mapLBox.insert(Tkinter.END,nameFormat) self.grid_columnconfigure(0,weight=1) # Allow resizing of window self.resizable(True,True) # Contrain to only horizontal self.update() self.geometry(self.geometry()) 

Die OnButtonClick Methode, die an meine Schaltfläche angehängt ist:

 def OnButtonClick(self): self.labelVar.set(self.mapLBox.get(self.mapLBox.curselection()[0])) return 

One Solution collect form web for “Tkinter listbox erhalten Attributfehler”

Sie greifen auf self.mapLBox aber Sie definieren nicht self.mapLBox . Nur weil Sie eine Variable namens mapLBox erstellen, mapLBox das nicht automatisch ein Attribut des Objekts.

Sie müssen das ändern:

 mapLBox = Tkinter.Listbox(...) 

… dazu:

 self.mapLBox = Tkinter.Listbox(...) 

… und natürlich ändern sie die anderen Orte, wo Sie auf mapLBox .

  • Wie man Argumente an einen Button-Befehl in Tkinter übergibt?
  • MtTkinter beendet keine Threads
  • Benötige eine Gui-Tastatur für einen Touchscreen, der einen Pin ausgibt, wenn der Code korrekt ist
  • NameError: globaler Name 'END' ist nicht definiert
  • Log4cplus: ERROR in python beim Aufruf für tkinter file dialog
  • Wie verstehe ich die Schließung in einem Lambda?
  • Tkinter und Fäden
  • Benötige Python / tkinter GUI, um sich dynamisch zu aktualisieren (für eine mehrsprachige GUI)
  • Python Tkinter Canvas kann die Tastatur nicht binden
  • Führen Sie den Prozess mit der Echtzeit-Ausgabe zu einer Tkinter-GUI aus
  • Datei-Dialog in Tkinter speichern
  • Python ist die beste Programmiersprache der Welt.