【问题标题】:How do you talk to custom DBUS object with Python?您如何使用 Python 与自定义 DBUS 对象对话?
【发布时间】:2016-05-02 19:16:37
【问题描述】:

我有一些使用 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 但对我正在尝试做的事情没有帮助...

【问题讨论】:

标签: python linux dbus


【解决方案1】:

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 的作者。

【讨论】:

    猜你喜欢
    • 2012-02-26
    • 1970-01-01
    • 2015-02-28
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多