无法使用python调用dbus中的klipper方法 [英] Cannot call klipper methods in dbus with python
问题描述
我尝试使用python从klipper总线调用方法。但是我做不到。这是我的尝试:
I try to call methods from klipper bus with python. But I could not make it. Here is what i try:
>>> 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'
如您所见,它同时设置了代理和接口。但是我无法通过该接口调用方法。
As you can see it sets both proxy and interface. But I cannot call methods via this interface.
我该怎么办?我在做什么错?
What can I do? What am i doing wrong?
编辑已解决:
当我查看 qdbusviewer时,我看到了快船的确切路径。
如此更改
Well when i look to "qdbusviewer" I saw the exact path of klipper. So changing
>> proxy = bus.get_object("org.kde.klipper","/org/kde/klipper")
此行与此:
>>> proxy = bus.get_object("org.kde.klipper","/klipper")
问题。
我希望这篇文章对某人有所帮助
I hope this post help someone
推荐答案
尝试,我发现了错误:
>> proxy = bus.get_object( org.kde.klipper, / org / kde / klipper)
必须为:
>> ;> proxy = bus.get_object( org.kde.klipper, / klipper)
这解决了问题
After some try, I found the the mistake:
>>> proxy = bus.get_object("org.kde.klipper","/org/kde/klipper")
must be:
>>> proxy = bus.get_object("org.kde.klipper","/klipper")
this solved the problem
这篇关于无法使用python调用dbus中的klipper方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!