如何让python程序重新启动并关闭现有的tkinter窗口



我正在想办法用Tkinter重新启动python程序。基本上,当用户点击重新启动按钮时,程序应该关闭所有现有的Tkinter选项卡;重新启动";程序。我该怎么做?

这就是我目前正在做的

def Restart(root,root2,root3):
fh = open(".exeinfo/AccountData/Filepath.baseconfig",'r')
path = fh.read()
call(["Restart.bat"])
root2.destroy()
try:
root.destroy()
except:
pass
try:
root3.destroy()
except:
pass

通常我会说你应该把整个代码放在一个循环中,但tkinter打破了这一点,所以我建议的是一个非常不干净的解决方案;另外两个简单的脚本与此脚本一起运行。

第一种是简单的多进程,类似于使用多进程与另一个进程一起运行当前脚本/应用程序。

然后将此添加到您在此处创建的函数的末尾,以重新启动程序:

f = open("restart.txt", "w+")
f.write("true")
f.close()
exit() #or however you choose to end your program after destroying the roots

这是你的脚本/应用程序的开始(在做任何其他事情之前,除了导入东西(:

r = open("restart.txt", "w+")
r.write("false")
r.close()

最后,在第三个脚本中只添加一个简单的循环:

x = 5
while x = 5:
f = open("restart.txt", "r+")
restart = f.read()
if restart == "true":
#run your application/script
else:
f.close()

这样做的目的是同时运行您的应用程序和这个简单的循环。当你想重新启动程序时,你会将文本文件更新为";真";然后关闭程序,然后简单循环将再次运行程序,这将把值更改为false,并防止打开程序的无限窗口。我怀疑这是最好的解决方案,也不完全是你想要的,但它应该"重新启动";您的程序。

最新更新