如何让一个Python程序重新启动并关闭一个现有的tkinter窗口?

0 人关注

我正试图弄清楚如何用Tkinter重启一个Python程序。基本上,当用户点击重启按钮时,程序应该关闭所有现有的Tkinter标签并 "重启 "程序。我怎样才能做到这一点?

这是我目前正在做的事情

        def Restart(root,root2,root3):
            fh = open(".exeinfo/AccountData/Filepath.baseconfig",'r')
            path = fh.read()
            call(["Restart.bat"])
            root2.destroy()
                root.destroy()
            except:
                root3.destroy()
            except:
    
python
tkinter
user13963860
发布于 2020-09-24
1 个回答
Matt
Matt
发布于 2020-09-24
已采纳
0 人赞同

通常我会说,你应该把全部代码放在一个循环中,但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":