''' 【简介】 PyQT5中 QTimer例子
'''
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_())
''' 【简介】 PyQT5中 QThread 例子
'''
from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * import sys
class MainWidget(QWidget): def init(self, parent=None): super(MainWidget, self).init(parent) self.setWindowTitle("QThread 例子") self.thread = Worker() self.listFile = QListWidget() self.btnStart = QPushButton('开始') layout = QGridLayout(self) layout.addWidget(self.listFile, 0, 0, 1, 2) layout.addWidget(self.btnStart, 1, 1) self.btnStart.clicked.connect(self.slotStart) self.thread.sinOut.connect(self.slotAdd)
def slotAdd(self, file_inf):
self.listFile.addItem(file_inf)
def slotStart(self):
self.btnStart.setEnabled(False)
self.thread.start()
class Worker(QThread): sinOut = pyqtSignal(str)
def __init__(self, parent=None):
super(Worker, self).__init__(parent)
self.working = True
self.num = 0
def __del__(self):
self.working = False
self.wait()
def run(self):
while self.working == True:
file_str = 'File index {0}'.format(self.num)
self.num += 1
# 发出信号
self.sinOut.emit(file_str)
# 线程休眠2秒
self.sleep(2)
if name == "main": app = QApplication(sys.argv) demo = MainWidget() demo.show() sys.exit(app.exec_())