gtk - 使用 GTK+ 或 PyGTK 转储 X 剪贴板数据

标签 gtk clipboard pygtk x11

如何使用 PyGTK/GTK+ 从 X 剪贴板粘贴 HTML 数据?

我需要类似 xclip 的东西,但能够将剪贴板数据输出为 HTML,而不仅仅是纯文本。我正在使用 PyGTK,但我并不害怕 C 语言中的普通 GTK+。

我已阅读 GtkClipboard和 PyGTK 的 gtk.Clipboard引用文献,我发现了这个question ,但我需要一个小例子来帮助我开始。

最佳答案

更新答案

原始答案(如下)使用旧的 API,这里是更新版本:

import gi

gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, Gdk

clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
text = clipboard.wait_for_contents(Gdk.Atom.intern("text/html", True))
print(text.get_data())

另请注意,您的应用程序可能使用与“text/html”不同的目标:您可以检查哪些目标可用:

def get_targets(clipboard, targets, n_targets):
    assert len(targets) == n_targets
    print(f"There are {n_targets} targets:")
    print("\n".join(map(str, targets)))

clipboard.request_targets(get_targets)

原始答案

找到了。我用过这样的东西:

clipboard = gtk.Clipboard()
target = "text/html"
clipboard.wait_for_contents(target)
clipboard.request_contents(target, dump_clipboard_callback)

然后回调函数就可以简单地提取数据:

def dump_clipboard_callback(clipboard, selection_data, data=None):
    print selection_data.data

关于gtk - 使用 GTK+ 或 PyGTK 转储 X 剪贴板数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2346924/

相关文章:

c - 是否可以有一个随机大小的 gtk 窗口,里面有一个网格

c# - IDataObject.GetData() 总是在我的类中返回 null

C# 复制到剪贴板

python - pygtk 只读 gtk.TextView(让它忽略鼠标点击)

python - gtk 中的 alloc_color() 有什么意义?

python - 如何在不使用已弃用的 Gdk.Screen.get_width() 的情况下在 Python/GTK 中获取总屏幕大小?

haskell - 自动调整容器子元素的大小(为什么不推荐使用container_resize_children)

python - gtk.FileChooserDialog.get_current_folder() 的奇怪行为

将函数连接到 GtkAction

silverlight - 可以在 Silverlight 中访问剪贴板(复制/粘贴)(甚至 4 OOB?)