我想在tkinter中刪除一個標籤,但是我似乎無法使它工作。刪除一個帶有函數參數的標籤tkinter
self.label(text='message')
self.label.grid(row=1,column=1)
def removelabel(labelname):
labelname.grid_remove()
removelabel(self.label)
我想在tkinter中刪除一個標籤,但是我似乎無法使它工作。刪除一個帶有函數參數的標籤tkinter
self.label(text='message')
self.label.grid(row=1,column=1)
def removelabel(labelname):
labelname.grid_remove()
removelabel(self.label)
你必須保存到窗口小部件,這就要求創建窗口小部件,奠定它在兩個步驟的引用:
self.label = tk.Label(...)
self.label.grid(row=1, column=1)
...
def removelabel(label):
label.grid_remove()
...
removelabel(self.label)
下面的語句甚至不會編譯
self.label(text='message').grid(row=1,column=1)
有了這個聲明,你基本上試圖從另一個函數label
返回的對象調用函數grid
,這可能不是wh在你想要的。
您可能希望創建一個Label控件,然後才電網它:
self.label = Label(...)
self.label.grid(...)
那麼你的代碼應該工作。
需要注意的是,如果你直接調用grid
在類Label
的構造函數:
self.label = Label(...).grid(...)
因爲grid
函數返回None
,self.label
也將是None
,你將有類似如下的錯誤:
TypeError: 'NoneType' object has no attribute 'grid_forget'
這個錯誤在tkinter的初學者中很常見。
這不會改變我的腳本。在我的實際腳本中有兩層,但我縮短了這個網站。原來這是一個壞主意 – sneakytreesnake
@sneakytreesnake根據你給我們的信息,你向我們展示的代碼不會簡單地工作,因爲它沒有意義。我在回答中提出的建議應該至少糾正您向我們展示的問題。如果你還有其他問題,我不知道。 – nbro