完全工具包不可知的跨平台剪贴板访问

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')

如果需要访问其他目标/格式,可以使用getset函数:

>>>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}

这些示例显示了使用富文本设置剪贴板的手动方式。 与便利函数不同,getset将字节的指令作为参数。 密钥应该是目标/格式字符串和值二进制数据或编码字符串将设置每个给定的格式/目标。

第一个例子是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
  • 中实现。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Spring启动测试中的java MockBean注释导致NonuniqueBeandDefinitionException   java Spring Hateoas调试模板不能为null   递归培根游戏Java程序?   java在Android中保存少量数据(对象)的最简单方法是什么?   异常处理Java中finally块的要点是什么?   是java。util。货币真的是工厂方法模式吗?   java如何输入字符以停止循环   java如何对流的某些部分执行缩减操作   java new Gson()。单例类的toJson(object)返回null   java Itext泰米尔字体显示不正确   java运行时。getRuntime()。gpg命令不起作用的exec()   java如何在preparedstatemenet中将字符连接到SQL字符串   java将同一实体的多个表示形式与lazyload合并时出错   JavaSpring、Hibernate和JPA:在entitymanager上调用persist似乎并没有提交到数据库   java osgi r6服务。组成部分注释属性列表