2014-12-02 90 views
0
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() 

而不是顯示第一個圖像,等待第二個,並顯示在第一個圖像上的第二個圖像,它等待一秒鐘,然後該框彈出並同時顯示兩個。在tkinter模塊中使用時間模塊

回答

1

time.sleep不能在Tkinter事件循環運行的同一線程中調用。它會阻塞Tkinter循環,從而導致程序凍結。

您應該使用.after方法來安排操作之後1000毫秒(或一秒)在後臺運行:

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

另外,我使用的lambda expression爲簡潔起見。但是,.after也接受正常功能對象:

self.after(1000, self.my_method) 
+0

非常感謝:) – nedak96 2014-12-02 22:00:28