Skip to main content

A small PyQt6 global signal bus and signal manager for unified application-wide signal usage.

Project description

fry-qt6-signal

fry-qt6-signal 是一个 PyQt6 全局信号管理组件,用来把软件中的信号定义、emitconnect 集中管理,适合中大型 Qt 程序把 UI、IO、工作流、缓存、任务进度等模块解耦。

安装

要求 Python 3.10+。默认依赖 PyQt6 6.5.x,这是一个相对保守、适合打包分发的 Qt6 版本范围。

pip install fry-qt6-signal

开发本项目时:

python -m pip install -e ".[dev]"

最小用法

from fry_qt6_signal import create_signal_manager

manager = create_signal_manager()

def on_status(message: str) -> None:
    print(message)

manager.connect("status_update_signal", on_status)
manager.emit("status_update_signal", "ready")

使用发射控制器

from fry_qt6_signal import Fry3dSignalEmitController, create_signal_manager

manager = create_signal_manager()
emitter = Fry3dSignalEmitController(manager)

emitter.emit_status_update_signal("开始处理")
emitter.emit_progress_update_signal(1, 10)
emitter.emit_task_completed_signal({"is_success": True, "message_str": "完成"})

使用连接控制器

from fry_qt6_signal import Fry3dSignalConnectController, create_signal_manager

class MainSignalController(Fry3dSignalConnectController):
    def connect_signals(self) -> None:
        self.connect("status_update_signal", self.on_status)
        self.connect("progress_update_signal", self.on_progress)

    def on_status(self, message: str) -> None:
        print(f"status: {message}")

    def on_progress(self, current: int, total: int) -> None:
        print(f"progress: {current}/{total}")

manager = create_signal_manager()
controller = MainSignalController(manager)

常用信号

  • status_update_signal(str):状态栏或轻量状态消息
  • progress_update_signal(int, int):当前进度、总进度
  • display_image_numpy_signal(str, numpy.ndarray):显示或预览 NumPy 图像
  • start_processing_signal() / stop_processing_signal():处理流程控制
  • params_changed_signal(dict):参数变更
  • task_completed_signal(dict):任务完成
  • fry_3d_data_loaded_signal(dict):3D 数据加载完成
  • fry_3d_workflow_step_finished_signal(dict):工作流单步完成
  • fry_3d_workflow_finished_signal(dict):工作流整体完成
  • fry_3d_cache_updated_signal(dict):缓存信息更新

完整说明见 docs/core_concepts.md

示例

python examples/basic_usage.py
python examples/controller_usage.py

测试

python -m pytest

打包

python -m build
python -m twine check dist/*

生成的 wheel 和 sdist 会在 dist/ 目录中。发布到 PyPI 前,需要先注册并确认包名 fry-qt6-signal 可用。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fry_qt6_signal-0.1.0.tar.gz (12.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fry_qt6_signal-0.1.0-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file fry_qt6_signal-0.1.0.tar.gz.

File metadata

  • Download URL: fry_qt6_signal-0.1.0.tar.gz
  • Upload date:
  • Size: 12.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for fry_qt6_signal-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0736cb8ef68fd04e2f3db17f09453ca768554a457226bd9139b2317e699eeb8f
MD5 9eb5e964a14569dfe8243d43961f1340
BLAKE2b-256 bc801692d65c0b87fb0c22fa24b6631c3391c9941f481b97c7babab5ea2a2ee1

See more details on using hashes here.

File details

Details for the file fry_qt6_signal-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: fry_qt6_signal-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for fry_qt6_signal-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 db9394bc94633f20df68cd62705fcd6a34c4cb0e350c3d34b2cc8229fe6be0d5
MD5 f2fca17a623ea95d9a08aa3f2015360d
BLAKE2b-256 a498ef482d038129f7abeb1be664c11dd95c588608dc064c1766d63429018a8e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page