当前位置: 首页 > news >正文

pyside6与协程

 

目录

一、常见错误 

错误一、使用协程函数作为槽函数。

错误二、在Qt循环中创建新的loop

二、解决方法: 

①安装库qasync

②修改Qt入口

③异步槽函数

④异步函数

⑤整体示例 


一、常见错误 

错误一、使用协程函数作为槽函数。

这样是肯定是不行,协程函数一定要跑在loop中,这里没有loop直接跑肯定会失败。

错误二、在Qt循环中创建新的loop

主线程通常已经被 Qt 的事件循环占用,因此不应该再创建新的异步事件循环。

 

二、解决方法: 

Qt 和 asyncio 的事件循环可以共存,但需要一些额外的设置。你可以使用 qasync 库来简化这个过程。 

①安装库qasync
pip install qasync
②修改Qt入口

异步槽函数
@asyncSlot()

异步函数
asyncio.ensure_future()

 

⑤整体示例 
import sys
import asyncio
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton
from qasync import QEventLoop, asyncSlotclass MyWindow(QWidget):def __init__(self, parent=None):super(MyWindow, self).__init__(parent)# 设置垂直布局self.setLayout(QVBoxLayout())# 创建组件self.button = QPushButton('点击')# 信号连接槽函数self.button.clicked.connect(self.btn_event)# 加入布局self.layout().addWidget(self.button)# 启动异步初始化任务asyncio.ensure_future(self.init_ui())@asyncSlot()async def btn_event(self):print(123)async def init_ui(self):print(456)if __name__ == '__main__':# 创建主循环app = QApplication(sys.argv)# 创建异步事件循环loop = QEventLoop(app)asyncio.set_event_loop(loop)# 创建窗口myWindow = MyWindow()# 显示窗口myWindow.show()# 运行事件循环loop.run_forever()

相关文章:

  • Python基础知识 (九)os模块、异常、异常的传递性
  • MySql语言操作数据库---MySql引擎,数据表,约束,基本查询,条件查询
  • 光耦知识分享 | 浅析施密特触发器光耦的主要特点
  • golang 反射的介绍和使用
  • 别人都在百度云智大会上吹,我就说点别的……
  • Linux进程:fork函数深度剖析
  • “天翼云息壤杯”高校AI大赛开启:国云的一场“造林”计划
  • 【Vite】如何阻止Vite对较小图片的默认处理
  • k8s pv(PersistentVolume) 状态含义
  • 连锁收银系统的五大功能 选择开源收银系统三要素
  • 【机器学习(十二)】机器学习回归案例之二手汽车价格预测—XGBoost回归算法—Sentosa_DSML社区版
  • 生成式人工智能在软件开发中的角色
  • SpringBoot开发——使用Hutool工具包处理日期时间详解
  • Cocos Creator 剪裁精灵图片方法记录(7)
  • C++20 std::format
  • JavaScript-如何实现克隆(clone)函数
  • 2017 年终总结 —— 在路上
  • echarts的各种常用效果展示
  • ES6核心特性
  • ES6语法详解(一)
  • LeetCode18.四数之和 JavaScript
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • Vue官网教程学习过程中值得记录的一些事情
  • Windows Containers 大冒险: 容器网络
  • 创建一种深思熟虑的文化
  • 少走弯路,给Java 1~5 年程序员的建议
  • 实习面试笔记
  • 使用SAX解析XML
  • 小程序开发中的那些坑
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​Python 3 新特性:类型注解
  • ​探讨元宇宙和VR虚拟现实之间的区别​
  • ​用户画像从0到100的构建思路
  • ###STL(标准模板库)
  • #define
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • (12)目标检测_SSD基于pytorch搭建代码
  • (33)STM32——485实验笔记
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (JS基础)String 类型
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (学习日记)2024.01.19
  • (学习总结)STM32CubeMX HAL库 学习笔记撰写心得
  • (一)、python程序--模拟电脑鼠走迷宫
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • . NET自动找可写目录
  • .NET 5种线程安全集合
  • .NET C# 配置 Options
  • .net 调用海康SDK以及常见的坑解释
  • .NetCore项目nginx发布
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .NET中使用Redis (二)