get paid

Get paid for the tasks you do online

2019年1月30日 星期三

PyQT5 教學 --- QTimer 應用


Timer 是 UI 很重要的一個功能, 因為UI 常常會因為時間定期自己更新畫面, 如camera
camera 可以想像成 每幾個 ms 會產生一個圖案 (image) 

所以需要每幾個 ms 去處理一次畫面

另外一個更常用的是計時器, 下面我先demo  一個簡單的記事功能, 之後會再慢慢增加功能
主要是讓大家了解 QTimer 的應用

QTimer 這個 class 其實很簡單, 當定義好QTimer 後, 每隔設定的時間會發出signal 到指定的Slot

另外我們會新使用一個PyQT的class 叫 QFont,  用來設定字型與大小

下面的 code 就是簡單的計時器

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QGridLayout, QWidget
from PyQt5.QtGui import QPixmap, QImage,QFont
from PyQt5.QtCore import QTimer

class window(QWidget):
    def __init__(self):
        super().__init__()
        self.label = QLabel(self)
        self.label.setText("0")
        self.label.setGeometry(200,100,200,200)
        self.label.setFont(QFont("Roman times",100,QFont.Bold)) #設訂字體
        self.setGeometry(500,300,700,500)
        self.setWindowTitle("PyQT Timer Demo")

        self.timer=QTimer(self) # 呼叫 QTimer 
        self.timer.timeout.connect(self.run) #當時間到時會執行 run
        self.timer.start(1000) #啟動 Timer .. 每隔1000ms 會觸發 run
        self.total = 0 #初始 total


    def run(self):

        self.label.setText(str(self.total)) # 顯示 total
        self.total+=1 #Total 加 1 


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = window()
    ex.show()
    sys.exit(app.exec_()) 


QTimer 一但 start 就會一直觸發事件, 並不是只出發一次
所以如有需要要自己 stop 

QTime 的時間單位是 ms , 與python 常用的timer 不同 timer 單位是 seconds

另外 QTimer 執行的時間要很小心, 如果 Slot 槽函數需要較長的執行
時間時, QTimer 的 時間就不要設太短, 
還有如果Timer 的時間設太短的話因為一直被觸發, 這時影響到其他功能的執行



1 則留言:

ChartGPT 學 python 很強喔

 ChartGPT 最近很紅 ,  前一陣子有一些小 module  本來想 google  一下 語法 但發現用 chartGPT 直接請他給 sample code 反而較快 所以只要你有基本 知識 ChartGPT 可以加速你的開發 好用喔