繁体   English   中英

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

[英]Cannot call klipper methods in dbus with python

我尝试用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'

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

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

编辑解决:

好吧,当我看到“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")这解决了这个问题

看起来很伤心。 通过bash调用qdbus可能更简单:

import os
system("qdbus org.kde.klipper /klipper getClipboardHistoryItem 0")

0表示当前选择,1表示后续选择 - 依此类推。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM