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