2009-11-16 59 views
2

例如,我在gnome中打開一個pdf文件或一個網頁,用鼠標雙擊一些文本,這樣一個單詞被選中,我怎樣才能得到這個字在後臺運行守護進程用python-dbus寫?如何使用python-dbus獲取桌面應用程序中的選定文本?

一些簡單但工作的腳本非常讚賞。

謝謝!

+0

AFAIK,這種行爲是依賴於應用程序:如果應用X不輸出文字,你運氣不好。使用D-feet或類似的內容來反思應用程序的方法。 – jldupont 2009-11-16 13:47:26

回答

7

你不需要d-Bus的,只是聽爲中點擊修改(精選)剪貼板例如基於GTK:

import gtk 

def _clipboard_changed(clipboard, event): 
    text = clipboard.wait_for_text() 

clip = gtk.clipboard_get(gtk.gdk.SELECTION_PRIMARY) 
clip.connect("owner-change", _clipboard_changed) 
+0

哇,太棒了!很棒!只需要一個額外的行: gtk.main() 讓程序繼續運行。 我想實現像通常的翻譯軟件的東西。我想我可以打開一個新窗口並將它放在鼠標周圍。 只有當我可以插入動態註釋到正在閱讀的PDF文件,完美。 – jaimechen 2009-11-18 09:53:37

+0

我遇到了gtk.gdk.SELECTION_PRIMARY問題。它只包含使用鼠標手動複製的剪輯。我有時會在bash終端中使用'xclip'來填充剪貼板,所以對我而言(對於鼠標和腳本剪貼板內容更新)的選擇設置是'gtk.gdk.SELECTION_CLIPBOARD'。我還添加了一個條件,在傳遞內容之前檢查'NoneType',否則在上面的變量'text'中會得到字符串「None」。 – hobs 2011-07-12 08:08:05

0

Gnome Do有幾個使用選定文本的插件。我不確定它是如何實現的(以及它是否使用DBus),但代碼應該揭示所有。 :)

相關問題