Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从二级进程中销毁tkinter窗口_Python_Python 3.x_Tkinter_User Input - Fatal编程技术网

Python 从二级进程中销毁tkinter窗口

Python 从二级进程中销毁tkinter窗口,python,python-3.x,tkinter,user-input,Python,Python 3.x,Tkinter,User Input,我有一个程序,在某一点上,弹出一个tkinter窗口。一旦关闭窗口,程序将继续。这是可以的,但如果用户没有这样做,我需要程序在2分钟后关闭窗口 由于我使用Pyinstaller,我明白我需要使用多进程而不是线程。无论哪种方式,当我从进程调用root.destroy()时,它都会失败,因为它找不到它(“没有定义名称‘root’”;命令行这样说,IDLE什么也不说) 我花了几个小时研究如何实现这个“简单”的功能。我只是想快速解决。这甚至不是我最初的问题,最初第二个进程会绕过主进程中的“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()

非常感谢,

您可以使用tkinter
after
机制在一段时间后注册要做的事情。见:

你好。您可以使用tkinter
after
机制在一段时间后注册要做的事情。看:谢谢!!请将评论更改为答案,以便我可以选择它…这是否回答了您的问题@Elektrofire:完成了,我创造了一个答案