【PyQt】定時器

  • startTimer(ms, Qt.TimerType) -> time_id 開啟一個定時器

    • Qt.TimerType 定時精度
      • Qt.PreciseTimer,盡可能保持毫秒級準確
      • Qt.CoarseTimer,5%的誤差間隔
      • Qt.VeryCoarseTimer:秒級,精度較低
    • timer_id:定時器的唯一標識
  • killTimer(time_id):根據(jù)定時器 ID,關(guān)閉定時器

  • timerEvent():定時器執(zhí)行事件

from PyQt5.Qt import *
import sys

class MyObject(QObject):
    def timerEvent(self, evt):
        print(evt, "1")


app = QApplication(sys.argv)

window = QWidget()
window.setWindowTitle("QObject 定時器的使用")
window.resize(500, 500)

obj = MyObject()
timer_id = obj.startTimer(1000)
# 指明定時器ID
obj.killTimer(timer_id)

window.show()

sys.exit(app.exec())

案例一:創(chuàng)建一個 QLabel,展示 10 秒倒計時

# 0. 導入需要的包和模塊
from PyQt5.Qt import *
import sys

class MyObject(QObject):
    def timerEvent(self, evt):
        print(evt, "1")

class MyLabel(QLabel):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.setText("10")
        self.move(100, 100)
        self.setStyleSheet("font-size: 22px;")

    def setSec(self, sec):
        self.setText(str(sec))

    def startMyTimer(self, ms):
        self.timer_id = self.startTimer(ms)

    def timerEvent(self, *args, **kwargs):
        # 1. 獲取當前的標簽的內(nèi)容
        current_sec = int(self.text())
        current_sec -= 1
        self.setText(str(current_sec))
        print(current_sec)

        if current_sec == 0:
            print("停止")
            self.killTimer(self.timer_id)

# 1. 創(chuàng)建一個應用程序?qū)ο?app = QApplication(sys.argv)

# 2. 控件的操作
# 2.1 創(chuàng)建控件
window = QWidget()
# 2.2 設置控件
window.setWindowTitle("QObject定時器的使用")
window.resize(500, 500)

label = MyLabel(window)
# label.setSec(5)
# 設置初始秒值
label.startMyTimer(1000)

# 2.3 展示控件
window.show()
# 3. 應用程序的執(zhí)行, 進入到消息循環(huán)
sys.exit(app.exec_())
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容