PYQT5 异步
本文禁止转载
异步哪里好用 PYQT5 神奇的很啊
from PyQt5.QtCore import QThread, pyqtSignal class MainWindow(QMainWindow, Ui_MainWindow): # 自带 def __init__(self, parent=None):# 自带 super(MainWindow, self).__init__(parent)# 自带 self.setupUi(self)# 自带 def K(self): #自定义K self.thread = R() self.thread.start() def w(): print(1) self.thread.T.connect(w) #异步完成后执行函数w def on_pushButton_clicked(self): self.K() class R(QThread): #自定义 T= pyqtSignal() #信号 def __init__(self, parent=None): super(R, self).__init__() def __del__(self): self.wait() def run(self): print(2) #耗时内容 self.T.emit() if __name__ == "__main__": ......
线程 回传参数 方法如下:
from PyQt5.QtCore import QThread, pyqtSignal class MainWindow(QMainWindow, Ui_MainWindow): # 自带 def __init__(self, parent=None):# 自带 super(MainWindow, self).__init__(parent)# 自带 self.setupUi(self)# 自带 def K(self): #自定义K self.thread = R() self.thread.T.connect(self.w) #异步完成后执行函数w self.thread.start() def w(list_par,str_par): # 接收参数 第一个是list类型,第二个是 str类型 print(1) def on_pushButton_clicked(self): self.K() class R(QThread): #自定义 T= pyqtSignal(list,str) #信号 同时回传参数 第一个是list类型,第二个是 str类型 def __init__(self, parent=None): super(R, self).__init__() def __del__(self): self.wait() def run(self): print(2) #耗时内容 list_par=[] str_par='' self.T.emit(list_par,str_par) # 回传参数 第一个是list类型,第二个是 str类型 if __name__ == "__main__": ......
异步+线程
from PyQt5.QtCore import QThread, pyqtSignal import asyncio import threading class MainWindow(QMainWindow, Ui_MainWindow): # 自带 def __init__(self, parent=None):# 自带 super(MainWindow, self).__init__(parent)# 自带 self.setupUi(self)# 自带 def K(self): #自定义K self.thread = R() self.thread.T.connect(self.w) #异步完成后执行函数w self.thread.start() async def XXX(self): # 循环等耗时操作 pass def DDDDD(self,loop): self.loop = loop asyncio.set_event_loop(self.loop) loop.run_forever() def w(list_par,str_par): # 接收参数 第一个是list类型,第二个是 str类型 CC = self.XXX() HHH= asyncio.new_event_loop() t = threading.Thread(target=self.DDDDD, args=(HHH,)) t.start() asyncio.run_coroutine_threadsafe(CC, HHH) def on_pushButton_clicked(self): self.K() class R(QThread): #自定义 T= pyqtSignal(list,str) #信号 同时回传参数 第一个是list类型,第二个是 str类型 def __init__(self, parent=None): super(R, self).__init__() def __del__(self): self.wait() def run(self): print(2) #耗时内容 list_par=[] str_par='' self.T.emit(list_par,str_par) # 回传参数 第一个是list类型,第二个是 str类型 if __name__ == "__main__": ......
===今日我言===========
勇气 让人进步
===================