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.

  • Neuronaler Netzwerk-Backpropagation-Algorithmus funktioniert nicht in Python
  • Django Anmeldung als anonymer Benutzer?
  • Wie kann ich BaseHTTPServer.serve_forever () in einer BaseHTTPRequestHandler-Unterklasse stoppen?
  • Schreiben von Antwortkörper mit BaseHTTPRequestHandler
  • Python AttributError: Modul 'string' hat kein Attribut 'maketrans'
  • Bild in N Farben in OpenCV Python reduzieren
  • 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 

  • Ermittlung der praktischen Zahlen
  • Trigger in sqlachemy
  • Authentifizierung in gitpython
  • Django Memcache: Vergleich und Set
  • Python 3 CSV-Datei, die UnicodeDecodeError: 'utf-8' Codec kann nicht decode Byte Fehler, wenn ich drucken
  • Fehlermeldung "MemoryError" in Python
  • 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.