Python/pyqt5/CODE/元件使用範例/進階範例/qt05_thread02.py

71 lines
1.3 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
'''
簡介
PyQT5中QThread範例
'''
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
global sec
sec=0
class WorkThread(QThread):
trigger = pyqtSignal()
def __int__(self):
super(WorkThread,self).__init__()
def run(self):
for i in range(2000000000):
pass
# 迴圈完畢後發射訊號
self.trigger.emit()
def countTime():
global sec
sec += 1
# LED顯示數字+1
lcdNumber.display(sec)
def work():
# 計時器每秒計數
timer.start(1000)
# 計時開始
workThread.start()
# 當收到迴圈完畢的訊號時,停止計數
workThread.trigger.connect(timeStop)
def timeStop():
timer.stop()
print("執行結束,耗時:",lcdNumber.value())
global sec
sec=0
if __name__ == "__main__":
app = QApplication(sys.argv)
top = QWidget()
top.resize(300,120)
# 垂直佈局類別QVBoxLayout
layout = QVBoxLayout(top)
# 增加一個顯示面板
lcdNumber = QLCDNumber()
layout.addWidget(lcdNumber)
button = QPushButton("測試")
layout.addWidget(button)
timer = QTimer()
workThread = WorkThread()
button.clicked.connect(work)
# 每次計時結束觸發countTime
timer.timeout.connect(countTime)
top.show()
sys.exit(app.exec_())