跳转到主要内容

Qt应用程序中使用asyncio的Python库

项目描述

qasync

Maintenance PyPI PyPI - License PyPI - Python Version PyPI - Download GitHub Workflow Status

简介

qasync 通过提供 PEP 3156 事件循环的实现,允许在 PyQt/PySide 应用程序中使用协程。

使用 qasync,您可以直接在 Qt 应用程序的事件循环中(主线程中)使用 asyncio 功能。使用异步函数进行 Python 任务可能比使用 threading.ThreadQThread 更容易、更干净。

如果您需要一些计算密集型任务并行执行,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 的未来

qasyncasyncqt 的一个分支,而 quamashasyncqt 的分支。由于那些不再维护,因此创建了 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

许可

您可以在 BSD 许可证 的条款下使用、修改和重新分发此软件。请参阅 LICENSE

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪一个,请了解有关 安装软件包 的更多信息。

源分布

qasync-0.27.1.tar.gz (14.3 kB 查看散列值)

上传时间

构建分布

qasync-0.27.1-py3-none-any.whl (14.9 kB 查看散列值)

上传时间 Python 3

由以下组织支持