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__":
......
===今日我言===========
勇气 让人进步
===================
浙公网安备 33010602011771号