pyqt5 异步事件 收集

编程入门 行业动态 更新时间:2024-10-09 02:29:23

pyqt5 异步<a href=https://www.elefans.com/category/jswz/34/1770959.html style=事件 收集"/>

pyqt5 异步事件 收集

pyqt5 异步事件 收集
quamash, 利用Qt事件循环实现 PEP 3156事件循环( asyncio ) api
//GitHub/article_112085

PyQt5 界面显示无响应的实现
.html

from PyQt5.QtCore import QThread, pyqtSignal
class interface(QMainWindow, Ui_MainWindow):
"""
Class documentation goes here.
"""
def xxxx():
"此处省略无数行代码......"
self.Work()
def Work(self):
self.thread = RunThread()
self.thread.start()
class RunThread(QThread):
# python3,pyqt5与之前的版本有些不一样
# 通过类成员对象定义信号对象
# _signal = pyqtSignal(str)
trigger = pyqtSignal()
def __init__(self, parent=None):
super(RunThread, self).__init__()
def __del__(self):
self.wait()
def run(self):
# 处理你要做的业务逻辑,这里是通过一个回调来处理数据,这里的逻辑处理写自己的方法
dlg.Config['user'] = dlg.check_account['account']
dlg.Config['passwd'] = dlg.check_account['password']
dlg.Config['jk'] = ''
if dlg.num != 1:
dlg.operato.config_item(dlg.Config, dlg.wx_update) # 初始化配置
else:
dlg.operato.config_item(dlg.Config, dlg.wx_create) # 初始化配置
self.trigger.emit()

22

...
def downfile(self,file, url):
print("开始下载:", file, url)
try:
r = requests.get(url, stream=True)
with open(file, 'wb') as fd:
for chunk in r.iter_content():
fd.write(chunk)
QApplication.processEvents()
except Exception as e:
print("下载失败了", e)
...

当使用异步协程的时候,pyqt5推荐的是使用quamash

import sys
import asyncio
import time
from PyQt5.QtWidgets import QApplication, QProgressBar
from quamash import QEventLoop, QThreadExecutor
app = QApplication(sys.argv)
loop = QEventLoop(app)
asyncio.set_event_loop(loop) # NEW must set the event loop
progress = QProgressBar()
progress.setRange(0, 99)
progress.show()
async def master():
await first_50()
with QThreadExecutor(1) as exec:
await loop.run_in_executor(exec, last_50)
# TODO announce completion?
async def first_50():
for i in range(50):
progress.setValue(i)
await asyncio.sleep(.1)
def last_50():
for i in range(50,100):
loop.call_soon_threadsafe(progress.setValue, i)
time.sleep(.1)
with loop: ## context manager calls .close() when loop completes, and releases all resources
loop.run_until_complete(master())
333

PyQt5 事件传递分析和信号解析
=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-4&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-4

更多推荐

pyqt5 异步事件 收集

本文发布于:2024-03-13 15:04:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1734238.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:事件

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!