完全工具包不可知的跨平台剪贴板访问
klembord的Python项目详细描述
克伦博德
klembord
是一个python 3包,它在受支持的平台(目前是linux和windows,但将来可能会有所改变)上提供完全的剪贴板访问。
klembord
具有最小的依赖性,仅依赖于特定于平台的api,这意味着它可以与任何图形工具包一起使用,也可以完全不使用工具包。
安装和依赖项
klembord
在linux下使用python-xlib
,在windows上使用ctypes
。
当使用pip
依赖项安装时,将自动处理依赖项。
pip install klembord
就这样
用法
>>>importklembord>>>klembord.init()>>>klembord.get_text()'example clipboard text'>>>klembord.set_text('some string')
klembord
还包括使用富文本的便利功能:
>>>klembord.get_with_rich_text()('example html','<i>example html</i>')>>>klembord.set_with_rich_text('plain text','<b>plain text</b>')
富文本函数设置平台的unicode和html格式
在Linux上,访问CLIPBOARD
以外的选择很简单,只需将选择名称传递给init
:
klembord.init('PRIMARY')
如果需要访问其他目标/格式,可以使用get
和set
函数:
>>>content={'UTF8_STRING':'string'.encode(),'text/html':'<s>string</s>'.encode()}>>>klembord.set(content)>>>klembord.get(['UTF8_STRING','text/html','application/rtf']){'UTF8_STRING':b'string','text/html':b'<s>string</s>','application/rtf':None}>>>fromcollectionsimportOrderedDict>>>content=OrderedDict()>>>content['HTML Format']=klembord.wrap_html('<a href="example.com">Example</a>')>>>content['CF_UNICODETEXT']='Example'.encode('utf-16le')>>>klembord.set(content)>>>klembord.get(['HTML Format','CF_RTF']){'HTML Format':b'<a href="example.com">Example</a>','CF_RTF':None}
这些示例显示了使用富文本设置剪贴板的手动方式。
与便利函数不同,get
和set
将字节的指令作为参数。
密钥应该是目标/格式字符串和值二进制数据或编码字符串将设置每个给定的格式/目标。
第一个例子是linux的使用。大多数目标都是用utf8
编码的,而且都相当简单。
第二个显示Windows上的用法现在,windows按照定义格式的顺序检索格式,因此使用collections.OrderedDict
是确保所说的html格式优先于纯文本的好主意。
CF_UNICODE
,unicode文本格式总是用utf-16le
编码的。
如果使用utf8
设置此目标,则粘贴时将获得未知字符。
另一个需要注意的是wrap_html
函数在Linux上设置普通HTML时,Windows使用它自己的(不必要的)格式。此函数接受html片段字符串并返回格式化字节对象。
wrap_html
仅在Windows上可用。
要列出可用的目标/格式:
>>>klembord.get(['TARGETS']){'TARGETS':['TARGETS','SAVE_TARGETS','UTF8_STRING','STRING']}
Linux上的剪贴板持久性
从0.1.3版起,klembord支持在应用后将内容存储在剪贴板中
出口。您确实需要显式调用klembord.store()
。注意这个方法
在windows上引发AttributeError
。
为什么是克伦博德
klembord在荷兰语中是剪贴板的意思由于英语中每个合理的名字都是用pypi取的,我决定编一本字典。
现在您可能会想,既然有这么多的包可供剪贴板访问,klembord
是不必要的。
唉,所有其他软件包都只能使用纯文本,依赖于繁重的工具包或外部可执行文件,在某个特定情况下,整个软件包只是从pyperclip导入复制和粘贴功能。
我觉得情况很糟糕,所以我决定写klembord
。
缺陷和限制
- 设置二进制格式在理论上应该可以工作,但大多数情况下都是未经测试的。
- 设置/获取以二进制格式构建的窗口(例如
CF_BITMAP
)不起作用,并将导致python崩溃这些操作需要特殊处理,而当前没有在klembord
中实现。