从IPython访问选择剪贴板

3
我希望能从ipython内部访问剪贴板中的文本。我已经有了一些进展(不确定这是否是最佳方式,只是在探索ipython魔法源码时发现的):
import IPython
from IPython.core.hooks import clipboard_get
ip = IPython.get_ipython()
my_string = clipboard_get(ip)

我尝试过手动复制的内容,似乎有效,但我想获取“另一个”剪贴板 - 当您使用中键单击时获取的那个。即选择缓冲区或其他名称。

你有什么想法吗?


1
我认为您无法使用 ipython 魔术方法来完成此操作。查看文档后发现,剪贴板 API 只是一个包装器,用于使用 tkinter 的剪贴板处理程序,而它(我不相信)不支持 x 缓冲区。 - roippi
1个回答

4
你可以通过Tkinter获取X Window的“中间鼠标按钮”选择(称为PRIMARY选择)。
import Tkinter # Replace "Tkinter" with "tkinter" for Python 3.x.
tk = Tkinter.Tk()
tk.withdraw()
print(tk.selection_get())

另一个解决方案是运行 xclip 并获取其输出。(如果您没有安装 xclip,它可以在大多数Linux发行版的软件包存储库中找到。)
import subprocess

print(subprocess.check_output(['xclip', '-o', '-selection', 'PRIMARY']))

是的,我也想到了这一点,也许这是最好的方法。我想没有必要重新发明轮子。 - wim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接