1.代码部分:
import sys
import time
import socket
import os
from message import Ui_Form
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
#主类
class mymainwindow(QMainWindow,Ui_Form):
def __init__(self,parent=None):
super(mymainwindow, self).__init__(parent)
self.setupUi(self)
#线程测试开始
def threadstartslot(self):
self.work = Thread()
self.work.trigger.connect(self.deal)#线程中的trigger与主类中的方法进行绑定
self.work.start()#开启线程
#线程测试停止
def threadstopslot(self):
self.work.threadstartflag=False
#更新UI方法
def deal(self,str):
self.textEdit.append(str)
#线程类
class Thread(QThread):
trigger = pyqtSignal(str)#注意pyqtSignal一定要实例到__init__前面
def __init__(self):
super(Thread, self).__init__()
#定义的变量
self.threadstartflag=True
self.timecount=0
#执行耗时操作
def run(self):
while self.threadstartflag == True:
self.trigger.emit(u"计时%d"%self.timecount)#发送更新GUI的信号
self.timecount+=1
time.sleep(1)
#显示GUI
if __name__ == '__main__':
app = QApplication(sys.argv)
MainWindow = mymainwindow()
MainWindow.show()
sys.exit(app.exec_())
2.执行之后的结果:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL61keOlXSq5ENJpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLyUjM4IzM1ETM2ITOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
3.说明部分
a.创建线程的类,在线程类中添加
来设置信号方法。
b.编写run方法,在其中加入
来实现信号的发送。
c.在主类中已经绑定了信号的实现槽deal
d.在主类中通过deal来更改或者刷新UI的各参数
#更新UI方法
def deal(self,str):
self.textEdit.append(str)
以实现通过多线程来更新UI