PyQt5中QTimer定時器的實例代碼
如果要在應用程序中周期性地進行某項操作,比如周期性地檢測主機的CPU值,則需要用到QTimer定時器,QTimer類提供瞭重復的和單次的定時器。要使用定時器,需要先創建一個QTimer實例,將其timeout信號連接到相應的槽,並調用start()
。然後定時器會以恒定的間隔發出timeout信號,當窗口控件收到timeout信號後,它就會停止這個定時器。
一、QTimer類中的常用方法
方法 | 描述 |
---|---|
start(milliseconds) | 啟動或重新啟動定時器,時間間隔為毫秒。如果定時器已經運行,它將被停止並重新啟動。如果singleShot信號為真,定時器將僅被激活一次 |
Stop() | 停止定時器 |
二、QTimer類中的常用信號
信號 | 描述 |
---|---|
singleShot | 在給定的時間間隔後調用一個槽函數時發射此信號 |
timeout | 當定時器超時時發射此信號 |
三、QTimer的使用
示例1:
import sys from PyQt5 import QtCore from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * class Demo(QWidget): count = 0 def __init__(self): super().__init__() self.setGeometry(100, 50, 500, 400) self.setWindowTitle('QTimer') self.list = QListWidget() self.label = QLabel('顯示當前時間') self.start = QPushButton('開始') self.end = QPushButton('結束') layout = QGridLayout() #初始化定時器 self.timer = QTimer(self) self.timer.timeout.connect(self.showTime) self.start.clicked.connect(self.startTimer) self.end.clicked.connect(self.endTimer) layout.addWidget(self.label,0,0,1,2) layout.addWidget(self.start,1,0) layout.addWidget(self.end,1,1) self.setLayout(layout) def showTime(self): #獲取系統現在的時間 time = QDateTime.currentDateTime().toString('yyyy-MM-dd hh:mm:ss dddd') self.label.setText(time) def startTimer(self): #設置時間間隔並啟動定時器 self.timer.start(1000) self.start.setEnabled(False) self.end.setEnabled(True) def endTimer(self): #關閉定時器 self.timer.stop() self.start.setEnabled(True) self.end.setEnabled(False) if __name__ == "__main__": app = QApplication(sys.argv) form = Demo() form.show() sys.exit(app.exec_())
運行效果如下:
示例2:
import sys from PyQt5 import QtCore from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * if __name__ == "__main__": app = QApplication(sys.argv) label = QLabel('<font color=blue size=20><b>PyQt5,窗口5秒後消失</b></font>') #無邊框窗口 label.setWindowFlags(Qt.SplashScreen|Qt.FramelessWindowHint) label.show() #設置5秒後自動退出 QTimer.singleShot(5000,app.quit) sys.exit(app.exec_())
運行效果如下:
PyQt5 QTimer計數到特定的秒數
我正在使用python創建程序,並且正在使用pyqt。我目前正在使用QTimer,我想每秒鐘打印一次“ timer works”,並在5秒鐘後停止打印。這是我的代碼:
timers = [] def thread_func(): print("Thread works") timer = QtCore.QTimer() timer.timeout.connect(timer_func) timer.start(1000) print(timer.remainingTime()) print(timer.isActive()) timers.append(timer) def timer_func(): print("Timer works")
解決方案
以下是一個簡單的演示,顯示瞭如何創建在固定數量的超時後停止計時的計時器。
from PyQt5 import QtCore def start_timer(slot, count=1, interval=1000): counter = 0 def handler(): nonlocal counter counter += 1 slot(counter) if counter >= count: timer.stop() timer.deleteLater() timer = QtCore.QTimer() timer.timeout.connect(handler) timer.start(interval) def timer_func(count): print('Timer:', count) if count >= 5: QtCore.QCoreApplication.quit() app = QtCore.QCoreApplication([]) start_timer(timer_func, 5) app.exec_()
到此這篇關於PyQt5中QTimer定時器的實例代碼的文章就介紹到這瞭,更多相關PyQt5 QTimer定時器內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python編程實現下載器自動爬取采集B站彈幕示例
- Pyqt+matplotlib 實現實時畫圖案例
- Python PyQt5實戰項目之查詢器的實現流程詳解
- Qt實現線程與定時器的方法
- Python Pygame實戰之歡樂打地鼠遊戲