PyQt5中使用多线程和信号更新界面UI(Python3.4.3)
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2015-12-14 05:44:38
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章
下面定义一个线程类并更新窗口中的按钮
from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * import time ''' 信号传参类型 pyqtSignal() #无参数信号 pyqtSignal(int) # 一个参数(整数)的信号 pyqtSignal([int],[str] # 一个参数(整数或者字符串)重载版本的信号 pyqtSignal(int,str) #二个参数(整数,字符串)的信号 pyqtSignal([int,int],[int,str]) #二个参数([整数,整数]或者[整数,字符串])重载版本 ''' class Mythread(QThread): #定义信号,定义参数为str类型 _signal=pyqtSignal(str) def __init__(self): super(Mythread,self).__init__() def run(self): for i in range(2000000): #发出信号 self._signal.emit('当前循环值为:%s'%i) #让程序休眠 time.sleep(0.5) if __name__ == '__main__': app = QApplication([]) dlg = QDialog() dlg.resize(400, 300) dlg.setWindowTitle("自定义按钮测试") dlgLayout = QVBoxLayout() dlgLayout.setContentsMargins(40, 40, 40, 40) btn=QPushButton('测试按钮') dlgLayout.addWidget(btn) dlgLayout.addStretch(40) dlg.setLayout(dlgLayout) dlg.show() def chuli(s): dlg.setWindowTitle(s) btn.setText(s) #创建线程 thread=Mythread() #注册信号处理函数 thread._signal.connect(chuli) #启动线程 thread.start() dlg.exec_() app.exit()