python - 无法使用python在dbus中调用klipper方法

标签 python dbus

我尝试使用 python 从 klipper 总线调用方法。但我做不到。这是我的尝试:

>>> import dbus
>>> bus = dbus.SessionBus()
>>> proxy = bus.get_object("org.kde.klipper","/org/kde/klipper")
>>> print proxy
<ProxyObject wrapping <dbus._dbus.SessionBus (session) at 0x7fc249da3bf0> :1.67 /org/kde/klipper at 0x7fc249dc16d0>
>>> iface = dbus.Interface(proxy,"org.kde.klipper.klipper")
>>> print iface
<Interface <ProxyObject wrapping <dbus._dbus.SessionBus (session) at 0x7fc249da3bf0> :1.67 /org/kde/klipper at 0x7fc249dc16d0> implementing 'org.kde.klipper.klipper' at 0x7fc249dc1790>
>>> print iface.getClipboardContents()
ERROR:dbus.proxies:Introspect error on :1.67:/org/kde/klipper: dbus.exceptions.DBusException: org.freedesktop.DBus.Error.UnknownObject: No such object path '/org/kde/klipper'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/site-packages/dbus/proxies.py", line 68, in __call__
    return self._proxy_method(*args, **keywords)
  File "/usr/lib/python2.6/site-packages/dbus/proxies.py", line 140, in __call__
    **keywords)
  File "/usr/lib/python2.6/site-packages/dbus/connection.py", line 622, in call_blocking
    message, timeout)
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.UnknownObject: No such object path '/org/kde/klipper'

如您所见,它设置了代理和接口(interface)。但是我不能通过这个接口(interface)调用方法。

我能做什么?我做错了什么?

编辑解决:

好吧,当我查看“qdbusviewer”时,我看到了 klipper 的确切路径。 如此变化

>> proxy = bus.get_object("org.kde.klipper","/org/kde/klipper")

这一行与此:

>>> proxy = bus.get_object("org.kde.klipper","/klipper")

解决问题。

我希望这篇文章对某人有所帮助

最佳答案

经过一番尝试,我发现了错误: >>> proxy = bus.get_object("org.kde.klipper","/org/kde/klipper") 必须是: >>> proxy = bus.get_object("org.kde.klipper","/klipper") 这解决了问题

关于python - 无法使用python在dbus中调用klipper方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5156549/

相关文章:

c - 在 glib dbus 中正确使用 GPtrArray 和 GValueArray

python - 使用正则表达式搜索字符串列表以查找子字符串 Python

Python 3 整数地址

python - Pandas 相当于 SQL where

python - BlueZ DBUS API - GATT 接口(interface)对 BLE 设备不可用

c - 发出 dbus-send 命令后,如何使用 C 调用方法?

linux - 从 radio 流中保存最喜欢的轨道

dbus - .Service 文件 D-Bus

python - Tkinter.Text 索引表达式和 unicode

Python 正确使用 __str__ 和 __repr__