【发布时间】:2020-09-09 20:48:17
【问题描述】:
我目前正在编写一个程序,它会做一些事情(例如不断地计算数字),直到某些内容被输入到显示的对话框中。
但是,每当我尝试此操作时,程序会在等待输入时冻结,因此在我尝试在后台运行的计数过程中没有任何进展。
有没有办法让计时器在后台连续运行,这样在 5 分钟内,计数器立即停止并且对话框消失?这是我的代码的基本框架。我使用 tkinter 对话框进行输入,并尝试创建一个将在后台运行的计时器。
from time import *
from tkinter import *
from tkinter import messagebox
from tkinter import simpledialog
while timer<300:
sleep(1)
timer += 1
ROOT = Tk()
ROOT.withdraw()
USER_INP = simpledialog.askstring(title="Code Required",
prompt="What's the Code?:")
最好不使用外部模块,但如果不是这样也可以。在此先感谢:)
-
这是请求的代码
from tkinter import * from tkinter import simpledialog root = Tk() root.withdraw() def ask(): simpledialog.askstring(title="Code Required", prompt="What's the Code?:") ## root.after(5000, root.destroy()) #added in the root.after() to try and terminate it after set time root.after(3000,ask) #triggers ask() after 3000 ms(3 seconds) root.after(100000, root.destroy()) # tried to wait 10 seconds before it breaks but this doesn't show the dialog box any more root.mainloop()
【问题讨论】:
-
@jordanm 我认为这是指振荡问题,而不是输入冻结程序并停止后台操作。不过谢谢,这只是我从简短阅读中收集到的。如果我错了,请纠正我
标签: python python-3.x tkinter input timer