无法使用python调用dbus中的klipper方法 [英] Cannot call klipper methods in dbus with python

查看:149
本文介绍了无法使用python调用dbus中的klipper方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆