Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter-如何重置对象列表?_Python_User Interface_Tkinter - Fatal编程技术网

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()