pyQt5 學習筆記(4)定時器

2021-09-28 14:04:30 字數 2315 閱讀 7339

定時器是程式設計中核心功能模組之一,qt為我們提供了定時器的api,我們可以通過指定乙個控制項,每隔一段時間,執行什麼操作。

pyqt5定時器有三個型別(qt.timertype):

pyqt5主要有以下兩個個功能:

對於計時器而言,精準定時有利於我們程式的控制,但是也增加的系統的負擔,所以選擇何種型別定時器,需要在具體的專案中確定。

以下的程式示例如何建立並使用乙個定時器:

from pyqt5.qt import

*import sys

#1. 繼承object類

class

myobject

(qobject)

:#2. 定義定時器事件

deftimerevent

(selfs,evt)

:print

('定時器被觸發'

)w = qwidget(

)w.setwindowtitle(

'定時器'

)w.resize(

400,

200)

#3. 建立乙個 myobject 物件

obj = myobject(

)#4. 開啟定時器,並設定間隔為1000ms

obj.starttimer(

1000

)w.show(

)if __name__ ==

'__main__':)

)

程式演示效果如下(這裡為壓縮提及,窗體部分沒有截圖),可以看到,每隔1s,控制台就列印乙個指定的訊息:

定時器事件的方法是qobject類自帶的,但是由於我們不可能去修改庫的類,所以使用了繼承的方式來建立乙個新的類,接著,我們按自己的需求重寫了這個事件。這裡還使用了 ==obj.starttimer(1000)==來開始obj這個物件的定時器,其引數為1000,即1000ms。注意到,這裡我們沒有使用任何建立定時器的api,所以建立的操作,應該在開始定時器內部自動實現的。

上一小節使用預設的定時器型別建立並開始了乙個定時器,定時器並不一定一直執行,有時也需要關閉它,關閉定時器的函式為:killtimer(),為了能關閉指定的定時器(乙個程式可能會擁有非常多個定時器),所以每乙個定時器建立的時候都會產生乙個定時器的id,並通過starttimer()來返回,以下程式設計了乙個lable控制項,它顯示的文字由「8」開始遞減到「0」停止:

from pyqt5.qt import

*import sys

#1. 繼承qlabel類

class

mylabel

(qlabel)

:def

__init__

(self,

*args,

**kwargs)

:super()

.__init__(

*args,

**kwargs)

#2. 設定標籤的基本屬性

self.settext(

'10'

) self.move(

115,55)

self.setstylesheet(

'font-size: 30px;'

) self.settext(

'8')

#3. 開始定時器,並記錄 id

self.timer_id = self.starttimer(

1000

)#4. 重寫定時器事件

deftimerevent

(self,evt)

:#5.獲取當前秒數,

cur_sec =

int(self.text())

#將文字轉為整型,否則無法正確計算

cur_sec -=

1 self.settext(

str(cur_sec)

)#將整型轉為字串,否則無法正確顯示

#當秒數為0時候,停止定時器

if cur_sec ==0:

self.killtimer(self.timer_id)

w = qwidget(

)w.setwindowtitle(

'定時器'

)w.resize(

250,

160)

lab = mylabel(w)

w.show(

)if __name__ ==

'__main__':)

)

PyQt5之QTimer定時器

如果要在應用程式中周期性地進行某項操作,比如周期性地檢測主機的cpu值,則需要用到qtimer定時器,qtimer類提供了重複的和單次的定時器。要使用定時器,需要先建立乙個qtimer例項,將其timeout訊號連線到相應的槽,並呼叫start 然後定時器會以恆定的間隔發出timeout訊號,當視窗...

PyQt5 學習筆記

pyqt5是由一系列python模組組成。超過620個類,6000函式和方法。能在諸如unix windows和mac os等主流作業系統上執行。pyqt5有兩種證書,gpl和商業證書。pyqt5類分為很多模組,主要模組有 qtcore 包含了核心的非gui的功能。主要和時間 檔案與資料夾 各種資料...

pyqt5學習筆記 1

from pyqt5.qt import import sys 使用sys.ar 是為了讓gui程式接收到使用者傳遞的引數 建立乙個控制項,如果這個控制項沒有父控制項,那麼pyqt5會控制項加上標題等屬性,並可以設定屬性內容 這個控制項也可以叫做頂層控制項,沒有父控制項的控制項的展示需要呼叫show...