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()
不是显示第一个图像,等待一秒钟,而是在第一个图像上显示第二个图像,而是等待一秒钟,然后弹出框并同时显示两个图像。
答案 0 :(得分:1)
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)