2009-11-16 30 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),但代码应该揭示所有。 :)

相关问题