从次要进程销毁tkinter窗口

时间:2020-06-07 12:38:16

标签: python python-3.x tkinter user-input

我有一个程序,它一时会弹出一个tkinter窗口。关闭窗口后,程序将继续。可以,但是如果用户没有这样做,我需要程序在2分钟后关闭窗口。

由于我使用Pyinstaller,所以我了解我需要使用多进程而不是线程。不管哪种方式,当我从进程中调用root.destroy()时,它都会失败,因为找不到它(“未定义名称'root'”;命令行这样,IDLE却什么也没说)。

我花了很多时间研究如何实现此“简单”功能。我只想快速解决。这甚至不是我最初的问题,最初,辅助过程将绕过或“输入一个值”到主过程中的“ input()”中,以便继续进行,但是我也不知道该怎么做。如果这更容易解决,我会支持。

我尝试了很多事情,但我想我会粘贴到我所在的位置:

from multiprocessing import Process
import time
import tkinter as tk

def func2():
    global root
    time.sleep(3)
    root.destroy()

if __name__ == '__main__':
    global root
    root = tk.Tk()
    T = tk.Text(root, height=20, width=60)
    T.pack()
    T.insert(tk.END, "test")

    p2 = Process(target=func2)
    p2.start()

    tk.mainloop()

非常感谢

1 个答案:

答案 0 :(得分:0)

一段时间后,您可以使用tkinter after机制注册待办事项。看到: tkinter: how to use after method