Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/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
Python 程序结束后如何删除按钮?_Python_User Interface_Tkinter - Fatal编程技术网

Python 程序结束后如何删除按钮?

Python 程序结束后如何删除按钮?,python,user-interface,tkinter,Python,User Interface,Tkinter,通过引用本文,我编写了以下代码 从tkinter导入* def main(): def hide_me(事件): event.widget.pack_-forget() root=Tk() btn=按钮(根,text=“单击”) 绑定(“”,隐藏我) btn.pack() btn2=按钮(根,text=“单击太多”) 绑定(“”,隐藏我) btn2.pack() btn3=按钮(root,text=“reload”,command=main) btn3.pack() root.mainloop(

通过引用本文,我编写了以下代码

从tkinter导入*
def main():
def hide_me(事件):
event.widget.pack_-forget()
root=Tk()
btn=按钮(根,text=“单击”)
绑定(“”,隐藏我)
btn.pack()
btn2=按钮(根,text=“单击太多”)
绑定(“”,隐藏我)
btn2.pack()
btn3=按钮(root,text=“reload”,command=main)
btn3.pack()
root.mainloop()
main()
但我想要的是,当我点击“重新加载”按钮时,程序将在同一窗口中从头开始重新启动,但它将在新窗口中启动。当我没有在main中声明root时,它将通过一系列重载按钮重新启动


请帮忙。提前感谢。

最好将其实现为一个带有顶级
Tk()
窗口的类。这样,您可以在窗口的整个生命周期中保留一个对窗口的引用。重新加载时,在窗口中的所有小部件上调用
pack\u forget()
,然后通过调用
main
重新打包

这可能有助于:

from tkinter import *

class UI:
    def __init__(self):
        self.root = Tk()

    def hide_me(self, event):
        event.widget.pack_forget()

    def main(self):
        self.btn=Button(self.root, text="Click")
        self.btn.bind('<Button-1>', self.hide_me)
        self.btn.pack()
        self.btn2=Button(self.root, text="Click too")
        self.btn2.bind('<Button-1>', self.hide_me)
        self.btn2.pack()
        self.btn3=Button(self.root,text="reload",command=self.reload)
        self.btn3.pack()
        self.root.mainloop()

    def reload(self):
        self.btn.pack_forget()
        self.btn2.pack_forget()
        self.btn3.pack_forget()
        self.main()

if __name__ == "__main__":
    ui = UI()
    ui.main()
从tkinter导入*
类用户界面:
定义初始化(自):
self.root=Tk()
def hide_me(自身、事件):
event.widget.pack_-forget()
def主(自):
self.btn=按钮(self.root,text=“单击”)
self.btn.bind(“”,self.hide_me)
self.btn.pack()
self.btn2=按钮(self.root,text=“单击太多”)
self.btn2.bind(“”,self.hide_me)
self.btn2.pack()
self.btn3=按钮(self.root,text=“reload”,command=self.reload)
self.btn3.pack()
self.root.mainloop()
def重新加载(自):
self.btn.pack_忘记()
self.btn2.pack_忘记()
self.btn3.pack_忘记()
self.main()
如果名称=“\uuuuu main\uuuuuuuu”:
ui=ui()
ui.main()

您可以使用
root.destroy()
方法销毁旧的
tkinter
根窗口并重新初始化应用程序类

请参阅以下代码:

import tkinter as tk
from tkinter import ttk

class App(object):
    def __init__(self):
        self.root = tk.Tk()
        self.setup()

    def setup(self):
        self.btn = ttk.Button(self.root, text="click")
        self.btn.bind('<Button-1>', self.hide_me)
        self.btn.pack()

        self.btn2 = ttk.Button(self.root, text="Click too")
        self.btn2.bind('<Button-1>', self.hide_me)
        self.btn2.pack()

        self.btn3 = ttk.Button(self.root, text="reload", command=self.restart)
        self.btn3.pack()

    def hide_me(self, event):
        event.widget.pack_forget()

    def restart(self):
        self.root.destroy()
        self.__init__()

def main():
    App()
    tk.mainloop()

if __name__=="__main__":
    main()
将tkinter作为tk导入
从tkinter导入ttk
类应用程序(对象):
定义初始化(自):
self.root=tk.tk()
self.setup()
def设置(自):
self.btn=ttk.按钮(self.root,text=“单击”)
self.btn.bind(“”,self.hide_me)
self.btn.pack()
self.btn2=ttk.Button(self.root,text=“单击太多”)
self.btn2.bind(“”,self.hide_me)
self.btn2.pack()
self.btn3=ttk.Button(self.root,text=“reload”,command=self.restart)
self.btn3.pack()
def hide_me(自身、事件):
event.widget.pack_-forget()
def重启(自我):
self.root.destroy()
self.\uuuu init\uuuuu()
def main():
App()
tk.mainloop()
如果名称=“\uuuuu main\uuuuuuuu”:
main()
import tkinter as tk
from tkinter import ttk

class App(object):
    def __init__(self):
        self.root = tk.Tk()
        self.setup()

    def setup(self):
        self.btn = ttk.Button(self.root, text="click")
        self.btn.bind('<Button-1>', self.hide_me)
        self.btn.pack()

        self.btn2 = ttk.Button(self.root, text="Click too")
        self.btn2.bind('<Button-1>', self.hide_me)
        self.btn2.pack()

        self.btn3 = ttk.Button(self.root, text="reload", command=self.restart)
        self.btn3.pack()

    def hide_me(self, event):
        event.widget.pack_forget()

    def restart(self):
        self.root.destroy()
        self.__init__()

def main():
    App()
    tk.mainloop()

if __name__=="__main__":
    main()