qtpy5 QThread 线程的使用
  HvTJUzsxOBtS 2023年11月25日 57 0



文章目录

  • 1、简介
  • 2、功能展示
  • 1) 展示
  • 2)、功能实现


1、简介

当窗口数据比较简单的时候,我们可以把数据处理放在窗口初始化代码里,但如果是读取数据时间比较长,比如网络请求,数据处理比较大的地方。我们可以创建QThread 线程。
实现界面的数据显示和数据读取的分离。满足MVC模型的设计要求。

2、功能展示
1) 展示

qtpy5  QThread  线程的使用_访问者

2)、功能实现
# -*- coding: utf-8 -*- 
'''
    【简介】
    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)     #列表显示item
        
	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_())

文件参考:
PyQt 快速开发与实践

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


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

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

暂无评论

推荐阅读
HvTJUzsxOBtS