Python Tkinter-如何重置对象列表?
昨天我问了这个问题,以了解如何动态创建一些要点。现在我希望添加一个清除按钮,这样当按下时,将重置整个表单。我已尝试将列表设置回[],但无效Python Tkinter-如何重置对象列表?,python,user-interface,tkinter,Python,User Interface,Tkinter,昨天我问了这个问题,以了解如何动态创建一些要点。现在我希望添加一个清除按钮,这样当按下时,将重置整个表单。我已尝试将列表设置回[],但无效 编辑-因此,基本上,当我按下“重置”时,我希望它看起来与加载表单时完全一样。使用销毁方法删除按钮: for button in self.button: button.destroy() 将Tkinter作为tk导入 类按钮块(对象): 定义初始(自我,主): self.master=master self.button=[] s
编辑-因此,基本上,当我按下“重置”时,我希望它看起来与加载表单时完全一样。使用
销毁方法删除按钮:
for button in self.button:
button.destroy()
将Tkinter作为tk导入
类按钮块(对象):
定义初始(自我,主):
self.master=master
self.button=[]
self.button_val=tk.IntVar()
entry=tk.entry()
entry.grid(行=0,列=0)
entry.bind(“”,self.onEnter)
entry.focus()
清除按钮=tk.button(master,text='clear',command=self.onClear)
清除按钮网格(行=0,列=1)
def onClear(自):
对于self.button中的按钮:
button.destroy()
def onEnter(自身、事件):
entry=event.widget
num=int(entry.get())
self.onClear()
对于范围内的i(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]。网格(sticky='WENS',row=i,column=0,padx=1,pady=1)
def onSelect(自我选择):
打印(self.button_val.get())
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
root=tk.tk()
按钮锁(根)
root.mainloop()
将列表往回设置(即使用self.button=[]
)只需清除按钮
变量中存储的数据。该操作本身并没有连接到用户界面(UI)。您必须明确删除(通过oneter
方法)创建的小部件对象
因此,您正在寻找的清除功能应该是可行的,方法是扩展上一个问题的范围。将onClear
方法添加到ButtonBlock
类中,以便在选择“清除”控件(即使用按钮小部件)时,其回调函数调用ButtonBlock.onClear()
,类似于条目
小部件调用oneter
方法的方式
编辑:请参阅联合国大学对此问题的回答。选中后,clear_按钮
控制调用ButtonBlock.onClear()
。onClear
中的for循环从button
列表中获取对每个按钮的引用,并调用对象的destroy
方法,从而将其从UI中删除
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()