从python访问备用剪贴板格式

2024-05-15 04:11:57 发布

您现在位置:Python中文网/ 问答频道 /正文

从支持富文本的应用程序复制到剪贴板通常会添加多种格式的文本。我需要找出可用的格式,然后以选定的格式检索剪贴板内容。如果有关系,我对富文本格式(来自Word、Acrobat、浏览器等)感兴趣,而不是图像数据或其他exotica。在

我看了又看,但是我找到的解决方案仅限于纯文本,super outdated,特定于Windows(我在OS X上)、命令行实用程序pbcopy和{}(它们不处理所有剪贴板格式)上的纯文本super outdated,或者以上几种。在

因此:如何获得剪贴板中显示的格式列表,并以我选择的格式提取其内容?在

平台,按兴趣排序:系统独立(我希望)、OSX山狮(我目前的平台)或类似平台、其他平台(我计划发布我的代码)。在

选定链接

pyperclip:看起来很有趣,但在OS X上它委托给pbcopy和{},它们只支持textrtf和{}格式。在

activestate中的This recipe仅适用于Windows,但显示了如何获取HTML。(This所以问题指向它)。在

This SO answer也特定于win32clipboard。在

This问题是关于将文件拖放到剪贴板(在Windows上)。很有意思,但对我需要的没有帮助。在

This tkinter-based solution很简单,在OSX上仍然可以工作,但是它只得到纯文本——而且我没有发现tkinter可以处理其他任何事情的证据。在

This显示了几乎相同的tkinter代码,用于将文本放入剪贴板。在

编辑(2017年5月)

我现在有了一个针对OSX的解决方案(见下面的self-answer),但是如果pyperclip或其他模块在Windows上也能做到这一点,我将非常感激。Pyperclip深入研究了windowsapi,因此它离支持所有可用格式的列表和选择不远了。在


Tags: 文本内容列表ostkinterwindows格式平台
1条回答
网友
1楼 · 发布于 2024-05-15 04:11:57

借助pypi上提供的模块richxerox,在osx上非常简单。它需要包括AppleAppKitFoundation模块的系统支持。我在为Python3构建Objective C时遇到了困难,所以最初我只能在Python2上使用它。不过,水蟒3配备了所有必要的部件。在

下面是一个演示,可以打印可用的剪贴板类型,然后获取并打印每个类型:

import richxerox as rx

# Dump formats
verbose = True
if verbose:
        print(rx.available(neat=False, dyn=True))
    else:
        print(rx.available())

# Dump contents in all formats
for k, v in rx.pasteall(neat=False, dyn=True).items():
    line = "\n*** "+k+":  "+v
    print(line)

输出:

^{pr2}$

要以所需格式打印并返回到文本,可以使用以下命令:

paste_format = "rtf"
content = rx.paste(paste_format)
if not content:
    content = rx.paste("text")

或者您可以先检查是否有可用的格式:

if "public.rtf" in rx.available():
    content = rx.paste("rtf")
else:
    content = rx.paste("text")

相关问题 更多 >

    热门问题