gpt4 book ai didi

Python Tkinter Tk root.after 延迟

转载 作者:太空宇宙 更新时间:2023-11-03 11:51:13 28 4
gpt4 key购买 nike

我正在尝试使用 tkinter 制作国际象棋时钟,为此我使用了 tkinter 类 Tk 中的 root.after 方法。当程序启动时,它运行得非常好,但过了一会儿时钟开始变得越来越慢,但如果我开始摇动鼠标,时钟又开始快速运行。对于时钟,时间精度至关重要,所以我不能以现在的方式运行程序。我该如何解决这个问题?

def RunClock(self):
"""
Method that runs and change the clock info
"""
#t0 = time.time()

if self.playing:
#Time remaining in milliseconds
clock = self.clock


minutes = clock//60000
clock %= 60000

sec = clock//1000
clock %= 1000

mil = clock//10

#If the turn is of player 1
if self.turn == 1:
self.WriteClock(self.canvas1, self.play1, "%.2i:%.2i:%.2i"%(minutes, sec, mil))
else:
self.WriteClock(self.canvas2, self.play2, "%.2i:%.2i:%.2i"%(minutes, sec, mil))

#tf = time.time()

#deltat = (tf - t0)

#s = 1 - deltat

self.rel -= 1

#if s > 0:
# time.sleep(s/1000)
#else:
# self.rel += s*1000

self.root.after(1, self.RunClock)

注意:运行函数的时间很低(可以用注释掉的tf和t0变量计算),所以时间区间我都没考虑

最佳答案

正如 Brian 指出的那样,减少时间间隔可能是解决您问题的最简单方法。或者,您可以尝试在它自己的线程上单独运行您的计时器并让它异步运行并向它发送线程事件,如此处讨论:

Python threading.timer - repeat function every 'n' seconds

关于Python Tkinter Tk root.after 延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27085762/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com