带有weakrefs的python的qt信号/时隙概念。

qsignal的Python项目详细描述


qsignal–python的qt信号/插槽

https://travis-ci.org/complynx/qsignal.svg?branch=master

该项目提供了易于使用的signal类来实现python中的signal/slot机制。 它没有严格地实现它,而是创建了一个简单易行的替代方案。

课程

信号

qsignal.Signal是主类。

要创建一个信号,只需创建一个sig = qsignal.Signal,并设置它的发射器。或者用 sig = qsignal.Signal(emitter=foo)

要发出它,只需调用sig()。 或者使用异步方法以异步模式发出它。

示例:

>>> from qsignal import Signal
>>> # Creating signal
>>> sig = Signal()
>>> # Or
>>> myobject.signal = Signal(emitter=myobject)
>>> # Connecting to signals
>>> sig.connect(callback)
>>> myobject.signal.connect(sig)
>>> myobject.signal.connect(otherobject.callback_method)
>>> # Emitting
>>> sig()
>>> myobject.signal('argument(s)', optional=True)
>>> # Emitting in asynchronous mode
>>> sig.async()

要将插槽连接到它,请将回调传递到connect中。这些连接是通过weakref来维护的,因此 你不需要搜索它们,也不需要在销毁某个对象时断开连接。

信号员

对象保持其信号的基类。

这个类的唯一目的是自动化信号名称和发射器引用。

>>> from qsignal import Signal, Signaller
>>> # For example, this is a class...
>>> class MyClass(Signaller):
>>>     my_signal = Signal()
>>> # This is a slot...
>>> def my_slot():
>>>     sig = Signal.emitted()
>>>     assert sig.name == my_signal
>>>     assert sig.emitter.__class__ == MyClass
>>> # And the connections...
>>> o = MyClass()
>>> o.my_signal.connect(my_slot)
>>> #...
>>> o.my_signal()

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

推荐PyPI第三方库


热门话题
java Spring freemarker多模板加载程序路径   在java插件中从控制台获取输入   java在包中创建继承类   网页抓取Java Jsoup网页抓取   java在线程内创建一个对象,而true条件具有相同的引用   java如何根据空格数拆分字符串   java新的安卓 studio更新中的配置文件“app”是什么?   java在将ArrayList写入/读取到文件时出现奇怪的问题   java Reg替换文本块第一次出现+最后一次出现   java当我单击任何RecyclerView列表项时,如何在MainActivity的EditText中显示特定的单击项?   JAVA XML删除节点仅删除第一个外观   java如何在数组中查找特定值   java SVG/矢量图形对象布尔运算(并集、交集、减法)   java在Android中创建线程需要多长时间   尝试从JBOSS联系Oracle LDAP服务器时发生java连接重置异常   java基于参数获取特定的实现实例   使用java就地修改文件内容   java MonetaryException:未加载MonetaryAmountsSingletonSpi   java接受用户的不同输入并使其触发完全相同的代码段的最短方法是什么   Spring 3.2.8应用程序中未找到java HTTP 404错误