我有一些自定义应用程序正在使用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的作者。