Python Tkinter Tk根 root.after 延迟

2024-10-01 02:36:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用tkinter做一个国际象棋时钟,为此我用根。后方法来自tkinter的Tk类。当程序启动时,它运行得很好,但过了一段时间,时钟开始变得越来越慢,但如果我开始晃动鼠标,时钟又开始快速运行。对于一个时钟来说,时间的精确性是至关重要的,所以我负担不起以现在的方式运行程序。我怎样才能解决这个问题?在

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变量计算它),所以我甚至没有在时间间隔内考虑它


Tags: theself程序iftimetkintertf时间