我正在 tkinter 中創建一個 GUI,在單擊按鈕后出現的子視窗中有一個listbox和一個Text專案。Listbox正在顯示 a 的值,dict這些值基本上是磁盤映像中檔案/目錄的名稱。我想Text在<ListboxSelect>事件和顯示型別或所選檔案的路徑上更改小部件的文本。
現在我無法將Text其設為全域,因為它必須出現在子視窗中,所以我需要一種在Listbox. 我可以給處理程式參考Textbox嗎?
這是我的代碼;
def command(event):
... #Need to change the Text here, how to access it?
def display_info(dict,filename):
child_w = Tk()
listbox = Listbox(child_w)
textview = Text(child_w)
...
listbox.bind(<ListboxSelect>,command)
def upload_file():
window = Tk()
upl_button = Button(command=upload_file)
window.mainloop()
有沒有辦法將文本視圖創建為全域,然后稍后更改其屬性以顯示在 child_window 等中。
uj5u.com熱心網友回復:
我能想到的兩種解決方案是創建textview一個全域變數或作為引數傳遞textview給command()。
- 引數解:
def command(event,txtbox):
txtbox.delete(...)
def display_info(dict,filename):
child_w = Tk()
listbox = Listbox(child_w)
textview = Text(child_w)
...
listbox.bind('<ListboxSelect>',lambda event: command(event,textview))
- 或者只是將其全球化:
def command(event):
textview.delete(...)
def display_info(dict,filename):
global textview
child_w = Tk()
listbox = Listbox(child_w)
textview = Text(child_w)
...
listbox.bind('<ListboxSelect>',command)
在說所有這些時,最好記住創建多個實體Tk幾乎從來都不是一個好主意。閱讀:為什么不鼓勵使用多個 Tk 實體?
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/357563.html
