pyqt_signal在主线程更新 ui界面

python的多线程通讯,在子线程里面更新数据,更新主线程的数值框,lcd等 有的时候回程序卡死,有的时候回数据卡在一个状态不变,这时候变化一下桌面大小,或者点击个按钮什么的,才会继续显示数据更新,所以在使用的时候,就需要在异步里面发送信号,在主线程里面更新页面。

这个是信号类

from PyQt5.QtCore import QThread, pyqtSignal
class pyqt_signal(QThread):
    signal = pyqtSignal()    # 括号里填写信号传递的参数

    def __init__(self):
        super().__init__()

    def run(self):
        # 进行任务操作
        self.signal.emit()    # 发射信号

在主程序里面引用这个类

class MainWindow(QMainWindow, ui):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)
        self.init_ui()
        self.init_connect()       

    def init_ui(self):
        self.singel = pyqt_signal()

    def init_connect(self):
        """
        初始化事件连接
        """     
        self.singel.signal.connect(self.update_date)
        self.btn_start.clicked.connect(self.readdata)
        
    def readdata(self,):
    	# 异步执行readai
       s1 = threading.Thread(target=self.read_ai)
       s1.start()        

    # 1-1000增加 在主界面更新
    def read_ai(self): 
    	t = 0
    	while 1
    		t+=1
	        self.csv_date = [t,t,t]
	        if t>1000:
	        	break
	       	self.singel.start()
    def update_date(self,):
        """
        同过pyqtsingel 刷新数据
        """
        self.val_R.setValue(self.csv_date[0])
        self.val_G.setValue(self.csv_date[1])
        self.val_B.setValue(self.csv_date[2])
if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    app.setStyleSheet(open("./data/steel.qss", "rb").read().decode("utf-8"))
    uii = MainWindow()
    uii.show()
    sys.exit(app.exec_())
  1. 实例化类
    self.singel = pyqt_signal()

  2. 绑定事件 对象.属性 绑定方法
    self.singel.signal.connect(self.update_date)

  3. 事件开始 在异步里面 触发信号,对象.start()
    self.singel.start()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值