一直在用這個撞牆撞我的頭。剛剛拿到Tkinter的繩索,跟着一個教程來獲得基礎知識,現在正在努力實現我自己的東西。我爲我正在做的一些工作創建了一個查詢界面。我在屏幕上有三個列表框,並且我需要從按鈕單擊中的所有三個選擇中選擇,以便可以生成查詢並顯示一些數據。Tkinter listbox獲取屬性錯誤
我收到的錯誤似乎說它看不到mapLBox
,表明範圍問題。如果我將代碼更改爲諸如print self.mapLBox.get(Tkinter.ACTIVE)
之類的簡單代碼,它仍會拋出相同的屬性錯誤。所有框和滾動條都正確繪製到屏幕上,並且錯誤的線條(#90)註釋掉了,它運行良好。
有兩個類,simpleApp_tk
(PasteBin),以下所有代碼都屬於,dbtools
在數據庫上運行查詢並返回結果。
錯誤:
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
裏面我initialise
方法(從__init__
運行)的列表和按鈕創建:
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())
的OnButtonClick
方法連接到我的按鈕:
def OnButtonClick(self):
self.labelVar.set(self.mapLBox.get(self.mapLBox.curselection()[0]))
return
一個明顯的,我怎麼錯過了!謝謝! – Tomassino