我有这个代码:
from tkinter import *
root = Tk()
while True:
print('hello')
root.update()
root.mainloop()
这里的主循环是:
while True:
print('hello')
root.update()
但我不确定这是最好的方法(如果我想输入一些东西,这就不起作用了)
然后我试了这个:
from tkinter import *
from threading imoport Thread
import time
root = Tk()
text = Label()
text.pack()
def main():
while True:
text[text] = str(time.time())
thread = Thread(target=main)
thread.start()
root.mainloop()
但我意识到这并没有我预期的那么快。所以问题是:创建主循环的最佳方法是什么?
1条答案
按热度按时间pobjuy321#
Tkinter为它提供了一个强大的工具,它被称为after。这个命令被用来延迟程序的执行或在将来的某个时候在后台执行命令。
之后,内置的Tcl命令管理脚本的调度以供将来评估,同时还充当同步休眠命令。
在上面的脚本中,我们已经建立了一个数字时钟,并且接触到了after方法,after方法只是一个间隔,在这个间隔的末尾,我们希望发生一些事情。
要了解有关此基本小部件方法的详细信息[单击]
之后(延迟毫秒,回调=无,参数)
此方法注册了一个回调函数*,它将在给定的毫秒数 * 之后被调用。Tkinter仅保证*回调函数不会在该时间之前被调用 *;如果系统忙碌,则实际延迟可能长得多。
这里我们有相同的代码,但是能够使用tkinter的
after_cancel
方法 * 取消 * 我们的循环。您不需要在类中全局报警。self.alarm = self.clock.after(...)
工作正常。取消后(标识)
取消报警回叫。
报警标识符。
Why threading isn't a good choice in coding frame work.