在tkinter模块中使用时间模块

时间:2014-12-02 21:51:55

标签: python user-interface time tkinter

from tkinter import *

import time

root = Tk()

class Cycle(Frame):

    def __init__(self):
        Frame.__init__(self)
        self.master.title("Cycle")
        self.grid()
        self.__pic1 = PhotoImage(file = "Bar.png")
        self.__pic2 = PhotoImage(file = "bell.gif")
        self.__pic1Label = Label(image = self.__pic1)
        self.__pic2Label = Label(image = self.__pic2)
        self.__pic1Label.grid(row=0, column=0)
        time.sleep(1)
        self.__pic2Label.grid(row=0, column=0)

Cycle()

不是显示第一个图像,等待一秒钟,而是在第一个图像上显示第二个图像,而是等待一秒钟,然后弹出框并同时显示两个图像。

1 个答案:

答案 0 :(得分:1)

无法在与Tkinter事件循环操作相同的线程中调用

time.sleep。它将阻止Tkinter的循环,从而导致程序冻结。

您应该使用.after方法将操作安排在1000毫秒(或一秒)后在后台运行:

self.after(1000, lambda: self.__pic2Label.grid(row=0, column=0))

另外,为了简洁起见,我使用了lambda expression。但是,.after也接受正常的函数对象:

self.after(1000, self.my_method)