Qt应用程序中使用asyncio的Python库
项目描述
qasync
简介
qasync
通过提供 PEP 3156
事件循环的实现,允许在 PyQt/PySide 应用程序中使用协程。
使用 qasync
,您可以直接在 Qt 应用程序的事件循环中(主线程中)使用 asyncio
功能。使用异步函数进行 Python 任务可能比使用 threading.Thread
或 QThread
更容易、更干净。
如果您需要一些计算密集型任务并行执行,qasync
也提供了支持,提供了功能与 asyncio
相同的 QEventLoop.run_in_executor
。
基本示例
import sys
import asyncio
from qasync import QEventLoop, QApplication
from PySide6.QtWidgets import QWidget, QVBoxLayout
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setLayout(QVBoxLayout())
self.lbl_status = QLabel("Idle", self)
self.layout().addWidget(self.lbl_status)
@asyncClose
async def closeEvent(self, event):
pass
@asyncSlot()
async def onMyEvent(self):
pass
if __name__ == "__main__":
app = QApplication(sys.argv)
event_loop = QEventLoop(app)
asyncio.set_event_loop(event_loop)
app_close_event = asyncio.Event()
app.aboutToQuit.connect(app_close_event.set)
main_window = MainWindow()
main_window.show()
with event_loop:
event_loop.run_until_complete(app_close_event.wait())
更多详细示例可以在 此处 找到。
qasync
的未来
qasync
是 asyncqt 的一个分支,而 quamash 是 asyncqt
的分支。由于那些不再维护,因此创建了 qasync
。愿它比它的前辈更长久。
qasync
将继续维护,并继续接受拉取请求。
需求
- Python >= 3.8
- PyQt5/PyQt6 或 PySide2/PySide6
qasync
在 Ubuntu、Windows 和 MacOS 上进行了测试。
如果您需要 Python 3.6 或 3.7 支持,请使用 v0.25.0 标签/版本。
安装
要安装 qasync
,请使用 pip
pip install qasync
许可
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪一个,请了解有关 安装软件包 的更多信息。
源分布
qasync-0.27.1.tar.gz (14.3 kB 查看散列值)
构建分布
qasync-0.27.1-py3-none-any.whl (14.9 kB 查看散列值)