PyQt5 QThread多线MVC 模式简单实例
  HvTJUzsxOBtS 2023年11月25日 24 0



文章目录

  • 1、简介
  • 2、功能实现


1、简介

实例for 循环仿照处理耗时操作。比如网络访问,读取文件,访问数据库等。
在线程中进行耗时操作,通过信号槽链接,传递到主程序更新ui
程序 time 主程序更新 ui
线程 模拟耗时操作,结束后,关闭time 定时器

PyQt5   QThread多线MVC 模式简单实例_pyqt5 Thread

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 快速开发与实践

本人郑重声明,本博客所著文章、图片版权归权利人持有,本博只做学习交流分享所用,不做任何商业用途。访问者可將本博提供的內容或服务用于个人学习、研究或欣赏,不得用于商业使用。同時,访问者应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人的合法权利;如果用于商业用途,须征得相关权利人的书面授权。若以上文章、图片的原作者不愿意在此展示內容,请及时通知在下,將及时予以刪除


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月25日 0

暂无评论

推荐阅读
  EwGMjZBp6zZh   2023年12月12日   28   0   0 实例化JavaJava实例化
HvTJUzsxOBtS