2012-06-19 45 views
3

我想繪製一個小部件(在此示例中爲畫布),然後在一段時間後將其刪除。就像顯示出來然後被刪除的消息一樣,以便用戶可以閱讀它,但不需要單擊「確定」或類似的東西來刪除消息。Python Tkinter - 在一段時間後隱藏小部件

下面是一個示例代碼。

from tkinter import* 

root = Tk() 

canvas_1 = Canvas(root, width = 300, height = 300, bg = 'white') 
canvas_1.grid(column = 0, row = 0) 

canvas_2 = Canvas(canvas_1, width = 200, height = 200, bg = 'blue') 
canvas_2.place(x = 50, y = 50) 

canvas_1.after(1000, canvas_2.place_forget()) 

root.mainloop() 

的問題是,它似乎Tkinter的運行after()法高於一切,無論何時它被調用的代碼。結果是canvas_2從不出現。

我試過time.sleep()但它似乎在這種情況下以相同的方式工作。

在此先感謝。

回答

4

問題是您的after聲明實際上導致canvas_2立即被遺忘這是因爲()的告訴Python 運行place_forget函數(而不是在1000ms運行它)。刪除()的,你會很好去。祝你好運。

替換此:

canvas_1.after(1000, canvas_2.place_forget()) 

與此:

canvas_1.after(1000, canvas_2.place_forget) 
+0

如此簡單,感謝的人。 –

+0

不客氣。這是一次或兩次被燙傷後很容易記住的事情。 – gary

相關問題