PyQt5 QThread多线MVC 模式简单实例
1、简介
实例for 循环仿照处理耗时操作。比如网络访问,读取文件,访问数据库等。
在线程中进行耗时操作,通过信号槽链接,传递到主程序更新ui
程序 time 主程序更新 ui
线程 模拟耗时操作,结束后,关闭time 定时器
2、功能实现
# -*- coding: utf-8 -*-
'''
【简介】
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(300000000): # for 循环 模拟耗时操作
pass
# 循环完毕后发出信号
self.trigger.emit()
def countTime(): #定时器 来进行ui界面的显示
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_())
文件参考:
PyQt 快速开发与实践
本人郑重声明,本博客所著文章、图片版权归权利人持有,本博只做学习交流分享所用,不做任何商业用途。访问者可將本博提供的內容或服务用于个人学习、研究或欣赏,不得用于商业使用。同時,访问者应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人的合法权利;如果用于商业用途,须征得相关权利人的书面授权。若以上文章、图片的原作者不愿意在此展示內容,请及时通知在下,將及时予以刪除