QEventManager


NameQEventManager JSON
Version 1.0.3 PyPI version JSON
download
home_pagehttps://gitee.com/chiyaun/qevent-manager
SummaryQEventManager使用多线程的方式对任务进行处理,qasync的另一个替代
upload_time2025-09-08 06:17:25
maintainerNone
docs_urlNone
author赤鸢仙人
requires_python>=3.7
licenseNone
keywords qt事件处理
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # QEventManager

#### 介绍

QEventManager使用多线程的方式对任务进行处理,qasync的另一个替代

#### 软件架构

依赖于Qt的QThread类,使用多线程的方式对任务进行处理。

#### 安装教程

```
pip install qeventmanager
```

#### 使用说明
[examples](examples)

##### 加载Url图片

```python
# coding: utf-8
import sys

from PySide6.QtCore import Qt
from PySide6.QtGui import QImage, QPixmap

from qeventmanager import qevent_manager

from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QPushButton


class Demo(QWidget):
    def __init__(self):
        super().__init__()
        self.verticalLayout = QVBoxLayout(self)
        self.pushButton = QPushButton(self)
        self.pushButton.setText("Click me")

        self.label = QLabel(self)
        self.label.setText("Hello, world!")
        self.label.setAlignment(Qt.AlignmentFlag.AlignCenter)
        self.label.setScaledContents(True)

        self.verticalLayout.setAlignment(Qt.AlignmentFlag.AlignTop)
        self.verticalLayout.addWidget(self.pushButton)
        self.verticalLayout.addWidget(self.label, 1)

        self.pushButton.clicked.connect(self.handle_click)

    def handle_click(self):
        url = 'https://i.loli.net/2018/12/06/5c0867986a2a0.jpg'
        qevent_manager.addLoadImageFromUrl(url, slot=self.handle_image, use_pil=False)

    def handle_image(self, image: QImage):
        image = image.scaledToWidth(self.verticalLayout.geometry().width())
        self.label.setPixmap(QPixmap.fromImage(image))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = Demo()
    demo.resize(1000, 600)
    demo.show()
    sys.exit(app.exec())
```


##### 加载本地图片
```python
# coding: utf-8
import sys

from PySide6.QtCore import Qt
from PySide6.QtGui import QImage, QPixmap

from qeventmanager import qevent_manager

from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QPushButton


class Demo(QWidget):
    def __init__(self):
        super().__init__()
        self.verticalLayout = QVBoxLayout(self)
        self.pushButton = QPushButton(self)
        self.pushButton.setText("Click me")

        self.label = QLabel(self)
        self.label.setText("Hello, world!")
        self.label.setAlignment(Qt.AlignmentFlag.AlignCenter)
        self.label.setScaledContents(True)

        self.verticalLayout.setAlignment(Qt.AlignmentFlag.AlignTop)
        self.verticalLayout.addWidget(self.pushButton)
        self.verticalLayout.addWidget(self.label, 1)

        self.pushButton.clicked.connect(self.handle_click)

    def handle_click(self):
        url = './img.jpg'
        qevent_manager.addLoadImageFromFile(url, slot=self.handle_image, use_pil=False)

    def handle_image(self, image: QImage):
        image = image.scaledToWidth(self.verticalLayout.geometry().width())
        self.label.setPixmap(QPixmap.fromImage(image))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = Demo()
    demo.resize(1000, 600)
    demo.show()
    sys.exit(app.exec())
```

##### 加载自定义函数
```python
# coding: utf-8
import sys

from PySide6.QtCore import Qt
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QPushButton
from requests import Response, post

from qeventmanager import qevent_manager


def baidu():
    url = 'https://wallpaper.soutushenqi.com/timeStamp?product_id=52&version_code=29106&sign=EB9C805D055305DB83FCAFEA541B9714'
    response = post(url)
    response.raise_for_status()
    response.encoding = 'utf-8'
    return response


class Demo(QWidget):
    def __init__(self):
        super().__init__()
        self.verticalLayout = QVBoxLayout(self)
        self.pushButton = QPushButton(self)
        self.pushButton.setText("Click me")

        self.label = QLabel(self)
        self.label.setText("Hello, world!")
        self.label.setAlignment(Qt.AlignmentFlag.AlignCenter)
        self.label.setScaledContents(True)

        self.verticalLayout.setAlignment(Qt.AlignmentFlag.AlignTop)
        self.verticalLayout.addWidget(self.pushButton)
        self.verticalLayout.addWidget(self.label, 1)

        self.pushButton.clicked.connect(self.handle_click)

    def handle_click(self):
        qevent_manager.addTask(baidu, slot=self.handle)
        # qevent_manager.addTaskToPool(baidu, slot=self.handle)

    def handle(self, response: Response):
        self.label.setText(response.text)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = Demo()
    demo.resize(1000, 600)
    demo.show()
    sys.exit(app.exec())
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://gitee.com/chiyaun/qevent-manager",
    "name": "QEventManager",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "Qt\u4e8b\u4ef6\u5904\u7406",
    "author": "\u8d64\u9e22\u4ed9\u4eba",
    "author_email": "2640610281@qq.com",
    "download_url": "https://files.pythonhosted.org/packages/81/43/5d036a0fb31f47baf789304103c3c79bf6f296dfeb7d7658c4a336a5afe8/qeventmanager-1.0.3.tar.gz",
    "platform": "all",
    "description": "# QEventManager\r\n\r\n#### \u4ecb\u7ecd\r\n\r\nQEventManager\u4f7f\u7528\u591a\u7ebf\u7a0b\u7684\u65b9\u5f0f\u5bf9\u4efb\u52a1\u8fdb\u884c\u5904\u7406\uff0cqasync\u7684\u53e6\u4e00\u4e2a\u66ff\u4ee3\r\n\r\n#### \u8f6f\u4ef6\u67b6\u6784\r\n\r\n\u4f9d\u8d56\u4e8eQt\u7684QThread\u7c7b\uff0c\u4f7f\u7528\u591a\u7ebf\u7a0b\u7684\u65b9\u5f0f\u5bf9\u4efb\u52a1\u8fdb\u884c\u5904\u7406\u3002\r\n\r\n#### \u5b89\u88c5\u6559\u7a0b\r\n\r\n```\r\npip install qeventmanager\r\n```\r\n\r\n#### \u4f7f\u7528\u8bf4\u660e\r\n[examples](examples)\r\n\r\n##### \u52a0\u8f7dUrl\u56fe\u7247\r\n\r\n```python\r\n# coding: utf-8\r\nimport sys\r\n\r\nfrom PySide6.QtCore import Qt\r\nfrom PySide6.QtGui import QImage, QPixmap\r\n\r\nfrom qeventmanager import qevent_manager\r\n\r\nfrom PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QPushButton\r\n\r\n\r\nclass Demo(QWidget):\r\n    def __init__(self):\r\n        super().__init__()\r\n        self.verticalLayout = QVBoxLayout(self)\r\n        self.pushButton = QPushButton(self)\r\n        self.pushButton.setText(\"Click me\")\r\n\r\n        self.label = QLabel(self)\r\n        self.label.setText(\"Hello, world!\")\r\n        self.label.setAlignment(Qt.AlignmentFlag.AlignCenter)\r\n        self.label.setScaledContents(True)\r\n\r\n        self.verticalLayout.setAlignment(Qt.AlignmentFlag.AlignTop)\r\n        self.verticalLayout.addWidget(self.pushButton)\r\n        self.verticalLayout.addWidget(self.label, 1)\r\n\r\n        self.pushButton.clicked.connect(self.handle_click)\r\n\r\n    def handle_click(self):\r\n        url = 'https://i.loli.net/2018/12/06/5c0867986a2a0.jpg'\r\n        qevent_manager.addLoadImageFromUrl(url, slot=self.handle_image, use_pil=False)\r\n\r\n    def handle_image(self, image: QImage):\r\n        image = image.scaledToWidth(self.verticalLayout.geometry().width())\r\n        self.label.setPixmap(QPixmap.fromImage(image))\r\n\r\n\r\nif __name__ == '__main__':\r\n    app = QApplication(sys.argv)\r\n    demo = Demo()\r\n    demo.resize(1000, 600)\r\n    demo.show()\r\n    sys.exit(app.exec())\r\n```\r\n\r\n\r\n##### \u52a0\u8f7d\u672c\u5730\u56fe\u7247\r\n```python\r\n# coding: utf-8\r\nimport sys\r\n\r\nfrom PySide6.QtCore import Qt\r\nfrom PySide6.QtGui import QImage, QPixmap\r\n\r\nfrom qeventmanager import qevent_manager\r\n\r\nfrom PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QPushButton\r\n\r\n\r\nclass Demo(QWidget):\r\n    def __init__(self):\r\n        super().__init__()\r\n        self.verticalLayout = QVBoxLayout(self)\r\n        self.pushButton = QPushButton(self)\r\n        self.pushButton.setText(\"Click me\")\r\n\r\n        self.label = QLabel(self)\r\n        self.label.setText(\"Hello, world!\")\r\n        self.label.setAlignment(Qt.AlignmentFlag.AlignCenter)\r\n        self.label.setScaledContents(True)\r\n\r\n        self.verticalLayout.setAlignment(Qt.AlignmentFlag.AlignTop)\r\n        self.verticalLayout.addWidget(self.pushButton)\r\n        self.verticalLayout.addWidget(self.label, 1)\r\n\r\n        self.pushButton.clicked.connect(self.handle_click)\r\n\r\n    def handle_click(self):\r\n        url = './img.jpg'\r\n        qevent_manager.addLoadImageFromFile(url, slot=self.handle_image, use_pil=False)\r\n\r\n    def handle_image(self, image: QImage):\r\n        image = image.scaledToWidth(self.verticalLayout.geometry().width())\r\n        self.label.setPixmap(QPixmap.fromImage(image))\r\n\r\n\r\nif __name__ == '__main__':\r\n    app = QApplication(sys.argv)\r\n    demo = Demo()\r\n    demo.resize(1000, 600)\r\n    demo.show()\r\n    sys.exit(app.exec())\r\n```\r\n\r\n##### \u52a0\u8f7d\u81ea\u5b9a\u4e49\u51fd\u6570\r\n```python\r\n# coding: utf-8\r\nimport sys\r\n\r\nfrom PySide6.QtCore import Qt\r\nfrom PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QPushButton\r\nfrom requests import Response, post\r\n\r\nfrom qeventmanager import qevent_manager\r\n\r\n\r\ndef baidu():\r\n    url = 'https://wallpaper.soutushenqi.com/timeStamp?product_id=52&version_code=29106&sign=EB9C805D055305DB83FCAFEA541B9714'\r\n    response = post(url)\r\n    response.raise_for_status()\r\n    response.encoding = 'utf-8'\r\n    return response\r\n\r\n\r\nclass Demo(QWidget):\r\n    def __init__(self):\r\n        super().__init__()\r\n        self.verticalLayout = QVBoxLayout(self)\r\n        self.pushButton = QPushButton(self)\r\n        self.pushButton.setText(\"Click me\")\r\n\r\n        self.label = QLabel(self)\r\n        self.label.setText(\"Hello, world!\")\r\n        self.label.setAlignment(Qt.AlignmentFlag.AlignCenter)\r\n        self.label.setScaledContents(True)\r\n\r\n        self.verticalLayout.setAlignment(Qt.AlignmentFlag.AlignTop)\r\n        self.verticalLayout.addWidget(self.pushButton)\r\n        self.verticalLayout.addWidget(self.label, 1)\r\n\r\n        self.pushButton.clicked.connect(self.handle_click)\r\n\r\n    def handle_click(self):\r\n        qevent_manager.addTask(baidu, slot=self.handle)\r\n        # qevent_manager.addTaskToPool(baidu, slot=self.handle)\r\n\r\n    def handle(self, response: Response):\r\n        self.label.setText(response.text)\r\n\r\n\r\nif __name__ == '__main__':\r\n    app = QApplication(sys.argv)\r\n    demo = Demo()\r\n    demo.resize(1000, 600)\r\n    demo.show()\r\n    sys.exit(app.exec())\r\n```\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "QEventManager\u4f7f\u7528\u591a\u7ebf\u7a0b\u7684\u65b9\u5f0f\u5bf9\u4efb\u52a1\u8fdb\u884c\u5904\u7406\uff0cqasync\u7684\u53e6\u4e00\u4e2a\u66ff\u4ee3",
    "version": "1.0.3",
    "project_urls": {
        "Bug Tracker": "https://gitee.com/chiyaun/qevent-manager/issues",
        "Documentation": "https://gitee.com/chiyaun/qevent-manager/blob/master/README.md",
        "Homepage": "https://gitee.com/chiyaun/qevent-manager",
        "Project Homepage": "https://gitee.com/chiyaun/qevent-manager",
        "Source Code": "https://gitee.com/chiyaun/qevent-manager"
    },
    "split_keywords": [
        "qt\u4e8b\u4ef6\u5904\u7406"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "81435d036a0fb31f47baf789304103c3c79bf6f296dfeb7d7658c4a336a5afe8",
                "md5": "459fe1b858b6133508cbcbc1c3f5e41d",
                "sha256": "d138db00da0caf3319b4480f437c41ccaf89cd53220fa6c9d2116cf6086e394a"
            },
            "downloads": -1,
            "filename": "qeventmanager-1.0.3.tar.gz",
            "has_sig": false,
            "md5_digest": "459fe1b858b6133508cbcbc1c3f5e41d",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 18876,
            "upload_time": "2025-09-08T06:17:25",
            "upload_time_iso_8601": "2025-09-08T06:17:25.805462Z",
            "url": "https://files.pythonhosted.org/packages/81/43/5d036a0fb31f47baf789304103c3c79bf6f296dfeb7d7658c4a336a5afe8/qeventmanager-1.0.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-08 06:17:25",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "qeventmanager"
}
        
Elapsed time: 3.30524s