如何在tkinter中给定时间后运行一个函数?

时间:2013-12-11 20:43:36

标签: 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 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 

这是快速查看计时器后的第一次尝试。我知道这段代码没有意义,但在我不假思索地试图解决之前,我宁愿有更多有经验的输入。

1 个答案:

答案 0 :(得分:2)

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

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"))