Timer 在tkinter中,如何在给定的时间后运行函数?

Timer 在tkinter中,如何在给定的时间后运行函数?,timer,tkinter,python-3.3,Timer,Tkinter,Python 3.3,所以我在tkinter的画布上有一张.gif图片。我想把这张照片换成另一张照片…但只能换3秒钟。并将其还原为原始图片 def startTurn(self): newgif = PhotoImage(file = '2h.gif') self.__leftImageCanvas.itemconfigure(self.__leftImage, image = newgif) self.__leftImageCanvas.image = newgif while se

所以我在tkinter的画布上有一张.gif图片。我想把这张照片换成另一张照片…但只能换3秒钟。并将其还原为原始图片

def startTurn(self):
    newgif = PhotoImage(file = '2h.gif')
    self.__leftImageCanvas.itemconfigure(self.__leftImage, image = newgif)
    self.__leftImageCanvas.image = newgif
    while self.cardTimer > 0:
        time.sleep(1)
        self.cardTimer -=1       
    oldgif = PhotoImage(file = 'b.gif')
    self.__leftImageCanvas.itemconfigure(self.__leftImage, image = oldgif)
    self.__leftImageCanvas.image = oldgif 

这是快速查看计时器后的第一次尝试。我知道这段代码没有意义,但在我继续无意识地试图弄明白它之前,我更希望有更多经验的输入。

Tkinter小部件有一个名为
的方法,可以用于在指定的时间段后运行函数。要创建图像并在三秒钟后更改,您可以执行以下操作:

def setImage(self, filename):
    image = PhotoImage(file=filename)
    self.__leftImageCanvas.itemconfigure(self.__leftImage, image=image)
    self.__leftImageCanvas.image = image

def startTurn(self):
    '''Set the image to "2h.gif", then change it to "b.gif" 3 seconds later'''
    setImage("2h.gif")
    self.after(3000, lambda: self.setImage("b.gif"))