上節課,我們的界面已經搭好了,我們注意到,這裡的按鈕沒有任何指令,那麼這節課,我們來為這2個按鈕添加指令的處理。是以,當他們被點選時,我們給他們建立一個指令函數,是以,當start按鈕被點選時,我們需要建立一個新的函數來響應,當stop按鈕被點選時,我們需要另一個函數來響應,是以我們來到類的底部。定義一個啟動計時器的函數,我們想做的第一件事就是確定:每次啟動我們計時器時,計時器能夠設定回全長。是以我們需要重新把它設定回DEFAULT_GAP。
|
接下來,我們要建立一個變量,來記錄計時器是否正在運作,是以在init函數中,我們添加一個新的變量self.running,并且它的初始值為false:
|
因為當我們的應用程式啟動時,定時器還沒有運作。但是,當我們回到start_timer函數,我們希望running現在等于true,因為計時開始了.是以running等于true。
|
那麼現在,回到我們建立的start按鈕的地方,在這裡,我們添加按鈕指令的調用,這裡command将等于self.start_timer.
|
這裡我們不需要括号,因為當按鈕被點選時,它就會調用這個函數,好的,這就是我們現在的開始按鈕。
同樣地,讓我們繼續添加停止按鈕的指令響應:
|
然後在類的底部定義stop_timer函數,我們希望stop_timer設定self.running等于False,因為當我們按下stop按鈕時,這時候應該停止計時:
|
是以這就是我們要做的。
這裡我們運作看看效果。我點選開始,我點選停止。什麼事情都沒有發生,這是因為我們也沒做什麼事情。但是這個指令函數确實執行了。
那麼,實際上,這些按鈕有它們自己的狀态,你可以選擇禁用它。我們希望當計時器還沒有開始運作時,stop按鈕被禁用,當計時器運作時,start按鈕被禁用,對吧。是以,讓我們回到建立按鈕的的函數中。我們要確定stop按鈕是預設禁用的:
|
因為程式開始運作時,計時器還沒有開始計時,這時候stop按鈕應該被禁用,對嗎?運作下,你看,stop按鈕被禁用了:
那麼,同樣的道理。當我們點選開始時,我們希望恢複stop按鈕,這個時候,start按鈕也應該被禁用。
|
緊接着,把這兩行複制,然後粘貼到他們stop按鈕的事件中。這裡和start按鈕的事件應該恰好相反:
|