# for python 3.x use 'tkinter' rather than 'Tkinter'
import Tkinter as tk
import time
class App():
def __init__(self):
self.root = tk.Tk()
self.label = tk.Label(text="")
self.label.pack()
self.update_clock()
self.root.mainloop()
def update_clock(self):
now = time.strftime("%H:%M:%S")
self.label.configure(text=now)
self.root.after(1000, self.update_clock)
app=App()
8条答案
按热度按时间hjzp0vay1#
Tkinter根窗口有一个名为
after
的方法,可用于调度在给定时间段后调用的函数。如果该函数本身调用after
,则设置了一个自动循环事件。下面是一个工作示例:
请记住,
after
并不能保证函数会准时运行。它仅计划在给定时间段后运行作业。如果应用程序正忙,则在调用之前可能会有延迟,因为Tkinter是单线程的。延迟通常以微秒为单位测量。8mmmxcuj2#
使用框架的Python3时钟示例。after()而不是顶级应用程序。还显示了使用StringVar()更新标签
c3frrgcw3#
5m1hhzi44#
您应该在main循环之前调用
.after_idle(callback)
,在callback
函数的末尾调用m1n 1o1p。例子:
sqserrrh5#
我对这个问题有一个简单的答案。我创建了一个线程来更新时间。在线程中,我运行一个while循环,获取时间并更新它。检查下面的代码,不要忘记将其标记为正确答案。
zf9nrax16#
我刚刚使用MVP模式创建了一个简单的计时器(但是对于这个简单的项目来说,这可能太过分了)。它有退出、开始/暂停和停止按钮。时间以HH:MM:SS格式显示。使用每秒运行几次的线程以及计时器启动时间和当前时间之间的差来实现时间计数。
Source code on github升
f3temu5u7#
zpf6vheq8#
您可以在tkinter中对此进行emulate
time.sleep
,并在给定时间后调用该函数。这可能会增加代码的可读性: