不能用python调用dbus中的klipper方法
问题描述:
我尝试用python调用klipper总线的方法。但我无法做到。这是我尝试:不能用python调用dbus中的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是以下一个 - 等。
经过一番尝试,我发现了错误: >>>代理= bus.get_object( “org.kde.klipper”,“/ org/kde/klipper”)必须为: >>> proxy = bus.get_object(“org.kde.klipper”,“/ klipper”) 解决了这个问题 – savruk 2011-03-01 15:55:39