如何使用Python与自定义DBUS对象进行对话



我有一些自定义应用程序正在使用dbus进行通信。。。

import dbus
bus = dbus.SystemBus()
obj = bus.get_object(
    "org.freedesktop.DBus",
    "/org/freedesktop/DBus"
)
def listNames(names):
    for name in names:
        print "%s" % name
listNames(obj.ListNames());

我收到了类似的东西,例如:

org.freedesktop.DBus
:1.7
test.helloworld
test.blahblah
test.customapp

在这一点上,我如何收听或与那些test.*应用程序交谈?实际上,DBus的get_object返回的任何应用程序。

我读过https://dbus.freedesktop.org/doc/dbus-python/doc/tutorial.html但对我想做的事情没有帮助…

dbus-python已被弃用,pydbus是dbus的现代python绑定。使用pydbus:

获取代理对象:

from pydbus import SystemBus
bus = SystemBus()
dev = bus.get('org.freedesktop.NetworkManager', '/org/freedesktop/NetworkManager/Devices/0')

查看特定代理对象的API:

help(dev)

调用方法:

dev.Disconnect()

读取属性:

print(dev.Autoconnect)

设置属性:

dev.Autoconnect = True

订阅信号:

dev.StateChanged.connect(print)
loop.run()

更多信息:https://github.com/LEW21/pydbus/blob/master/doc/tutorial.rst

免责声明:我是pydbus的作者。

最新更新