Skip to main content

简单的信号/槽实现

项目描述

https://img.shields.io/pypi/v/signaling.svg?style=flat-square https://img.shields.io/travis/mdomke/signaling/master.svg?style=flat-square https://img.shields.io/pypi/l/signaling.svg?style=flat-square https://img.shields.io/coveralls/mdomke/signaling.svg?style=flat-square

这是什么?

信令是Qt 框架中已知的信号/槽模式的简单实现。它没有外部要求和 100% 的测试覆盖率。

安装

通常

pip install signaling

如何使用它?

假设您有一个函数,只要发出连接的信号,就应该调用该函数,如以下代码块所示:

def slot(arg):
  print("Slot called with {}".format(arg))

signal = Signal(args=['arg'])
signal.connect(slot)
signal.emit(arg=1)  # Slot called with 1

事实上,您可以将多个插槽连接到同一个信号,只要它们共享相同的函数签名。

请注意,信号库在连接插槽和发出信号时会执行一些完整性检查。

  • 所有连接到信号的槽都必须提供与Signal构造函数的args参数相同的参数说明。

  • 必须使用与Signal构造函数指定的完全相同的参数进行 emit调用。

因此,以下所有示例都会引发异常:

def slot_with_arg(arg):
  pass

def slot_without_arg():
  pass

# InvalidSlot: Slot 'slot_with_arg' has to callable without arguments
Signal().connect(slot_with_arg)

# InvalidSlot: Slot 'slot_without_args' has to accept args ['arg'] or **kwargs.
Signal(args['arg']).connect(slot_without_arg)

s = Signal()
s.connect(slot_without_args)
# InvalidEmit: Emit has to be called without arguments.
s.emit(foo=1)

项目详情


下载文件

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

源分布

信令-1.0.0.tar.gz (11.9 kB 查看哈希)

已上传 source

内置分布

信令-1.0.0-py2.py3-none-any.whl (5.7 kB 查看哈希

已上传 py2 py3