简单的信号/时隙实现

signaling的Python项目详细描述


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

这是什么?

signalingsignal/slot patternas的简单实现 从Qt framework知道。 它没有外部要求和100%的测试覆盖率。

安装

通常的

pip install signaling

如何使用?

假设您有一个函数,当连接的信号 发出,如下代码块所示:

defslot(arg):print("Slot called with {}".format(arg))signal=Signal(args=['arg'])signal.connect(slot)signal.emit(arg=1)# Slot called with 1

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

注意,signaling库在连接时执行一些健全性检查 插槽和发射信号。

  • 连接到信号的所有插槽都必须提供与 由Signal构造函数的args参数表示。
  • 必须使用与 Signal构造函数。

因此,下面的所有示例都会引发一个异常:

defslot_with_arg(arg):passdefslot_without_arg():pass# InvalidSlot: Slot 'slot_with_arg' has to callable without argumentsSignal().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)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java允许具有不同父类的类扩展类,而无需多重继承   java如何创建动态化的JScrollPane w/JPanel作为客户端?   java如何组织和命名包   在Java中读取属性文件   java无法解释的Android意图行为   在Java中动态执行多个BPEL文件的部署   ssl Java 6 SNI(服务器名称指示)?   java我们可以使用Robot框架自动化web和移动应用程序来执行并行执行   java for star pettern的循环   java为什么BinaryReader在线程中,从netty读取错误的数据包?   在java中将华氏度转换为摄氏度   使用Spark和java处理空值和引号编写CSV文件   Java中已排序日期到块的列表   visual studio代码VSCode Java不是linting或自动完成局部变量,而是自动完成Java快捷方式,如“sysout”