我有一個基於python的Tkinter GUI,我希望在單擊「讀取」按鈕時顯示幾個變量的值。理想情況下,這應該在顯示更新變量的窗口中的特定框架中發生,而不會干擾具有其他功能的GUI小部件的其餘部分。如何在Python Tkinter GUI的「標籤」小部件中顯示更新的值?
我遇到的問題是這樣的 - 每次我點擊「閱讀」時,更新的變量都列在舊變量的正下方,而不是覆蓋該位置。我似乎對標籤的工作以及padx,pady(標籤的位置)的理解不正確。我已經粘貼下面的代碼。正確的方法應該是什麼,以便以前的數據被刪除,並且新數據被粘貼到該位置?
def getRead():
#update printList
readComm()
#update display in GUI
i=0
while i < (len(printList)):
labelR2=Tk.Label(frameRead, text=str(printList[i]))
labelR2.pack(padx=10, pady=3)
i=i+1
frameRead=Tk.Frame(window)
frameRead.pack(side=Tk.TOP)
btnRead = Tk.Button(frameRead, text = 'Read', command= getRead)
btnRead.pack(side = Tk.TOP)
window.mainloop()
上述代碼成功地顯示在一個型顯示器的printList的元件。但是,每次調用getRead(單擊讀取按鈕時),都會附加到前一個顯示。
PS - 如果有更好的方式顯示數據,除了標籤小部件,那麼請建議。
這會在最後一行提供一個錯誤「UnboundLocalError:本地變量'labelR2s'在賦值之前引用」。 – sbhatla
哦,對 - 你需要聲明'labelR2s'作爲一個全局變量(更新答案)。順便說一句,使用類結構通常比使用全局變量更好。 – Brionius