asp.net 窗体网站,做网站的心得体会,python网站开发项目,美容加盟的网站建设目录
一、常见错误
错误一、使用协程函数作为槽函数。
错误二、在Qt循环中创建新的loop
二、解决方法#xff1a;
①安装库qasync
②修改Qt入口
③异步槽函数
④异步函数
⑤整体示例 一、常见错误
错误一、使用协程函数作为槽函数。
这样是肯定是不行#xff…
目录
一、常见错误
错误一、使用协程函数作为槽函数。
错误二、在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, parentNone):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()