Python DBUS - 带有额外参数的接口上的`PropertiesChanged`监听器

时间:2016-05-04 16:49:22

标签: python linux python-3.x signals dbus

使用Python 3 DBUS模块,信号处理程序为PropertiesChanged信号采用的默认参数如下:

def handler(interface, changed_properties, invalidated_properties): something...

听众设置如下:

dbus.Interface.connect_to_signal("PropertiesChanged", handler)

如何在末尾添加额外的参数,以便我可以拥有一个具有如下结构的信号处理程序:

def handler(interface, changed_properties, invalidated_properties, extra_argument): something...

1 个答案:

答案 0 :(得分:0)

PropertiesChanged是org.freedesktop.DBus.Properties接口的一部分,您不应修改其签名。其他程序假设它完全按照DBus规范中的规定实现。多个DBus绑定使用它来在代理对象发生更改时自动更新它们的属性。

您可以使用自己的自定义参数创建自己的信号:

使用python-dbus(已弃用):

class Example(object):
    @dbus.service.signal(dbus_interface='com.example.Sample',
                        signature='us')
    def NumberOfBottlesChanged(self, number, contents):
        pass

使用pydbus:

from pydbus.generic import signal

class Example(object):
    """
      <node>
        <interface name='com.example.Sample'>
          <signal name='NumberOfBottlesChanged'>
            <arg type='u' name='number'/>
            <arg type='s' name='contents'/>
          </signal>
        </interface>
      </node>
    """
    NumberOfBottlesChanged = signal()