我想在Linux GUI环境中将HTML(和等效的纯文本)复制到剪贴板。跨平台是理想的,尽管Linux是我的直接目标。我还想使用在Python 3.x和2.x中都可以使用的东西。
根据PyGObject docs,Gtk.Clipboard
对象set_with_data()
方法应该合适。但是当我尝试使用它时,该类没有set_with_data
成员。
>>> from gi.repository import Gtk, Gdk
>>> clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
>>> clipboard.set_with_data
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Clipboard' object has no attribute 'set_with_data'
如何使用PyGObject将HTML加纯文本复制到剪贴板?
((我可能考虑使用PyGTK,但是according to this answer已弃用,并且在Python 3.x中不支持。)
似乎set_with_data()没有通过内省公开,这可能是由于该函数接受了两个C回调(内省或绑定不支持)。看到:https://developer.gnome.org/gtk3/stable/gtk3-Clipboards.html#gtk-clipboard-set-with-data
[这是GTK +已记录的错误:https://bugzilla.gnome.org/show_bug.cgi?id=656312
一些潜在的解决方法:
我无法从Python进行此工作,但是我发现了以下使用xclip的解决方法:
import subprocess
s = "TEXT TO <b>COPY</b>!"
cmd = ["xclip", "-sel", "clip", "-t", "text/html", "-f"]
subprocess.check_output(cmd, input=s, text=True)