【问题标题】:How do I get the selected text in desktop application using python-dbus?如何使用 python-dbus 在桌面应用程序中获取选定的文本?
【发布时间】:2009-11-16 13:41:22
【问题描述】:

例如,我在 gnome 中打开一个 pdf 文件或网页,用鼠标双击一些文本,所以选择了一个单词,如何在后台运行用 python-dbus 编写的守护进程中获取这个单词?

非常感谢一些简单但有效的脚本。

谢谢!

【问题讨论】:

  • AFAIK,此行为取决于应用程序:如果应用程序 X 不导出文本,那么您就不走运了。使用 D-feet 或类似方法来内省应用程序的方法。

标签: python text gtk selection dbus


【解决方案1】:

您不需要 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)

【讨论】:

  • 哇,太棒了!效果很好!只需要一个额外的行: gtk.main() 让程序继续运行。我想实现类似于通常的翻译软件的东西。我想我可以打开一个新窗口并将其放在鼠标周围。只有当我可以在正在读取的 pdf 文件中插入动态注释时,才完美。
  • gtk.gdk.SELECTION_PRIMARY 有问题。它仅包含使用鼠标手动复制的剪辑。我有时在 bash 终端中使用 xclip 填充剪贴板,因此适用于我的选择设置(用于鼠标和脚本剪贴板内容更新)是 gtk.gdk.SELECTION_CLIPBOARD。我还在传递内容之前添加了一个条件来检查NoneType,否则您将在上面名为text 的变量中获得字符串“None”。
【解决方案2】:

Gnome Do 有一些使用所选文本的插件。我不确定它是如何实现的(以及它是否使用 DBus),但代码应该会显示所有内容。 :)

【讨论】:

    猜你喜欢
    • 2016-04-16
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    • 2020-11-11
    • 2010-12-02
    • 2017-09-29
    • 1970-01-01
    • 2012-01-04
    相关资源
    最近更新 更多