gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 00:41:06 30 4
gpt4 key购买 nike

我引用此 question 编写了以下代码

from tkinter import *

def main():
def hide_me(event):
event.widget.pack_forget()

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

main()

但我想要的是,当我点击重新加载按钮时,程序将从同一窗口中的开头重新启动,但它是在新窗口中启动的。当我没有在 main 中声明 root 时,它将通过一系列重新加载按钮重新启动。

enter image description here

请帮忙。提前致谢。

最佳答案

最好将其实现为具有顶级 Tk() 窗口的类。这样您就可以在窗口的整个生命周期中保留对窗口的一个引用。重新加载时,对窗口内的所有小部件调用 pack_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()

关于python - 程序结束后如何删除按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57341052/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com