為了能夠實作計時,我們要建立一個新的方法,命名為update.為了示範這個函數的調用情況,我們在這裡列印出一個Update字元串。
|
接着,我們希望我們的Update函數每秒被調用一次,這應該如何實作呢。不知道大家還記得我們的全局應用程式變量master,我們可以通過它,來使Update函數每秒調用一次。它有一個函數after,它的第一個參數是毫秒數。是以1000毫秒是一秒。然後我們希望每隔一秒調用一次它,是以第二個參數是self.update:
|
現在,我們來到init函數中調用它:
在所有的控件都建立之後,我們調用self.update:
|
好的,是以現在運作一下。你看,每隔一秒視窗就列印一次update:
實際上,在這個方法中,我還需要處理計時器的遞減以及計時器的重置。是以,首先,讓我們計算計時器剩餘的時間。我們會說:
|
然後,如果計時器在運作并且還有剩餘的時間:
|
那麼,我們就要讓時間減一秒。是以,
|
否則,我們就暫停計時器。
|
這樣。它就會停止計時,并且重置按鈕。
那麼接下來,我們來對計時器的标簽進行一些操作,實際上,我們現在已經在我們的build_timer函數中繪制了計時器的标簽。
|
在構造函數中,我們也建立了一個用于顯示時間的的字元串變量。
|
是以現在,我們想告訴這個變量,當這個變量被寫入資料時,或者說,被指派時,我們就調用build_timer函數,是以w意味着‘寫入’。
|
是以現在build_timer将被自己調用。但它被自己調用的時候,我們希望它發送更多的資訊。我們不得不使用args來記錄這些資訊,我們不會用到這些資訊,但如果不補充這個參數,Python的文法是不允許的:
|
接下來,讓我們來更新這個标簽。首先,我們需要建立一個函數,來計算剩下的分鐘數和秒數。它需要一個參數:秒數。
我想傳回的分鐘,是以,這裡傳回的應該是秒除以60.還有秒模60.
|
是以在Update函數中,讓我們轉換下秒數.
|
然後我們要做就是對文本變量time_text寫入資料。self.timer_text.set()。
這裡我們還需要為定時器文本設定一個格式。通常我們會這樣做,因為我們想要分和秒,是以需要用零來填充兩個數字。
|
然後在else語句之後.還需要在設定一次文本,是以複制這裡,然後粘貼到else語句之後,然後修改為DEFAULT_GAP:
|
我們運作試試效果:
你看,當我們開始時,計時遞減,點選stop按鈕,重置計時器,沒問題。
接着。我們再來測試,當25分鐘過後,是否正确,但這裡,我不想等待25分鐘。是以讓我們修改預設的計時,是以,來到檔案的頂部,修改值為5:
|