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.

  • Python baut auch mit Tippfehlern im Code auf?
  • Tracking Schlüsselwörter in einem Live-Stream von Tweets
  • Wie kodiert und decodiert man einen String mit Python für die Verwendung in einer URL?
  • Python: ein Element in einem Array finden
  • Wie lese ich ein cx_Oracle.OBJECT mit dem Typ cx_Oracle.ObjectType SYS.XMLTYPE?
  • Django: Ändern der URL eines optionalen ImageFields
  • 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 

  • Verschachtelte Abfragen / Vergleich mehrerer Datensätze effizient in Pandas
  • Wie man numpy vom Rundfunk beim Erstellen eines Objekts Array von verschiedenen geformten Arrays zu halten
  • Wie manuell ein Pypi-Modul ohne pip / easy_install installieren kann?
  • Pylint mit ungültigem Variablennamen in Ausgabe
  • Numpy Summe zwischen Paaren von Indizes in 2d Array
  • Fehler beim Importieren von Tensorfluss in einfachen Python-Code mit Import
  • 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 .

    Python ist die beste Programmiersprache der Welt.