2011-03-01 26 views
3

我嘗試用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") 

解決了這個問題。

我希望這篇文章可以幫助別人

+0

經過一番嘗試,我發現了錯誤: >>>代理= bus.get_object( 「org.kde.klipper」,「/ org/kde/klipper」)必須爲: >>> proxy = bus.get_object(「org.kde.klipper」,「/ klipper」) 解決了這個問題 – savruk 2011-03-01 15:55:39

回答

1

經過一番嘗試,我發現了錯誤: >>> proxy = bus.get_object("org.kde.klipper","/org/kde/klipper") 必須是: >>> proxy = bus.get_object("org.kde.klipper","/klipper") 這個問題解決了

0

看起來很疤。這可能是簡單的通過bashqdbus

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

0是當前的選擇,1是以下一個 - 等。