昨天我問這個問題Creating elements by loop Tkinter找出如何動態地創建一些要點。現在我正在尋找添加一個清晰的按鈕,所以按下時,將重置整個表單。我已經嘗試將列表設置回[],但它不起作用。Tkinter - 我將如何去重置對象列表?
編輯 - 所以基本上,當我按下復位我想它看起來就像它加載表單時一樣。
昨天我問這個問題Creating elements by loop Tkinter找出如何動態地創建一些要點。現在我正在尋找添加一個清晰的按鈕,所以按下時,將重置整個表單。我已經嘗試將列表設置回[],但它不起作用。Tkinter - 我將如何去重置對象列表?
編輯 - 所以基本上,當我按下復位我想它看起來就像它加載表單時一樣。
的按鈕與destroy
方法除去:
for button in self.button:
button.destroy()
import Tkinter as tk
class ButtonBlock(object):
def __init__(self, master):
self.master = master
self.button = []
self.button_val = tk.IntVar()
entry = tk.Entry()
entry.grid(row=0, column=0)
entry.bind('<Return>', self.onEnter)
entry.focus()
clear_button = tk.Button(master, text='Clear', command=self.onClear)
clear_button.grid(row=0, column=1)
def onClear(self):
for button in self.button:
button.destroy()
def onEnter(self, event):
entry = event.widget
num = int(entry.get())
self.onClear()
for i in range(1, num+1):
self.button.append(tk.Radiobutton(
self.master, text=str(i), variable=self.button_val, value=i,
command=self.onSelect))
self.button[-1].grid(sticky='WENS', row=i, column=0, padx=1, pady=1)
def onSelect(self):
print(self.button_val.get())
if __name__ == '__main__':
root = tk.Tk()
ButtonBlock(root)
root.mainloop()
設置列表背面(使用即self.button = []
)剛剛清除存儲在button
變量的數據。該行爲本身並沒有連接到用戶界面(UI)。您必須顯式刪除創建的小部件對象(由onEnter
方法)。
所以,你正在尋找的結算功能,應該從以前的問題,延長了answer是可行的。一個onClear
方法添加到ButtonBlock
類,這樣當你的「清除」控制(即使用一個按鈕控件),選擇它的回調函數調用ButtonBlock.onClear()
,類似於您Entry
小部件如何調用onEnter
方法。
編輯:請參閱unutbu對此問題的回答。選中時,clear_button
控件調用ButtonBlock.onClear()
。 for循環中onClear
得到從button
列表中每個按鈕ojbect的引用,並調用對象的方法destroy
,從UI中刪除。
這工作了魅力,謝謝。 – Arktri 2013-03-27 12:57:50