销毁二次处理的tkinter窗口

问题描述 投票:-1回答:1

我有一个程序,在某一时刻会弹出一个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()

非常感谢,

python python-3.x tkinter user-input
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.