1
我有一個名爲_their_grid的Canvas,它有許多與鼠標點擊相關的關聯事件。我在一定的條件下禁用它10秒。以下是相關的代碼。Tkinter畫布狀態的奇怪行爲time.sleep
print "not your turn"
# disable opponent's grid during their turn
self._their_grid.config(state=DISABLED)
time.sleep(10)
self._their_grid.config(state=NORMAL)
print "now you can go"
但是,在十秒鐘的睡眠中,我仍然設法觸發事件。這不應該是這樣,因爲狀態= DISABLED應該關閉所有事件。下面的代碼在睡眠狀態下注釋掉,會停止所有事件。
print "not your turn"
# disable opponent's grid during their turn
self._their_grid.config(state=DISABLED)
#time.sleep(10)
#self._their_grid.config(state=NORMAL)
#print "now you can go"
爲什麼我用time.sleep得到這種奇怪的行爲?
然而,當小部件被禁用,你嘗試觸發任何綁定的事件(例如點擊禁用按鈕),當再次啓用小部件時,不處理它。 'time.sleep()'有什麼區別? – 2013-03-03 00:16:54
@ A.Rodas:time.sleep完全按照它的說法:它會讓您的應用程序進入睡眠狀態。操作系統仍然嚮應用程序及其小部件發送事件,但該應用程序無法響應,因爲它很慢。當它醒來時,它處理事件隊列中的任何事物。將狀態設置爲禁用指示事件循環忽略某些事件。 – 2013-03-03 01:16:46
@BryanOakley但是一旦Canvas被禁用,在應用程序進入睡眠狀態之前就不應該有「排隊」事件。所以當它「醒來」時,爲什麼會有排隊的事件呢? – BlackSheep 2013-03-03 04:33:16