在做GUI界面时我们希望后台任务能够与UI分开,在PyQt中,主线程用来重绘界面。而子线程里边的实时处理结果需要反馈到界面,子线程里边不能执行界面更新操作。
<强> wxpython多线程刷新界面转到强>
https://www.jb51.net/article/176308.htm
<强>下面给出类Python3 + PyQt5多线程防假死动态刷新界面的模板强>
从进口QtWidgets PyQt5 QtCore 导入系统 从PyQt5。QtCore进口* 导入的时间 #继承QThread 类Runthread (QtCore.QThread): #通过类成员对象定义信号对象 _signal=pyqtSignal (str) def __init__(自我): 超级(Runthread自我). __init__ () def __del__(自我): self.wait () def运行(自我): 因为我在范围(100): time . sleep (0.2) self._signal.emit (str(我)#注意这里与_signal=pyqtSignal (str)中的类型相同 类的例子(QtWidgets.QWidget): def __init__(自我): super () . __init__ () #按钮初始化 自我。按钮=QtWidgets。QPushButton(“开始”,自我) self.button。setToolTip(“这是一个& lt; b> QPushButton小部件”) self.button.resize (self.button.sizeHint ()) self.button。移动(120、80) self.button.clicked.connect (self.start_login) #绑定多线程触发事件 #进度条设置 自我。pbar=QtWidgets.QProgressBar(自我) self.pbar。setGeometry (50, 210, 25) self.pbar.setValue (0) #窗口初始化 自我。setGeometry (300、300、300、200) self.setWindowTitle (“OmegaXYZ.com”) self.show () 自我。线程=没有#初始化线程 def start_login(自我): #创建线程 自我。线程=Runthread () #连接信号 self.thread._signal.connect (self.call_backlog) #进程连接回传到GUI的事件 #开始线程 self.thread.start () def call_backlog(自我,味精): self.pbar.setValue (int(味精))#将线程的参数传入进度条 if __name__==癬_main__”: 应用=QtWidgets.QApplication (sys.argv) myshow=例子() myshow.show () sys.exit (app.exec_ ())
效果:
以上这篇PyQt5多线程刷新界面防假死示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。