我试图使一个基本的Windows应用程序构建出用户输入的字符串,然后将其添加到剪贴板。如何使用Python将字符串复制到剪贴板?
当前回答
小部件还具有名为.clipboard_get()的方法,该方法返回剪贴板的内容(除非根据剪贴板中的数据类型发生某种错误)。
在这个错误报告中提到了clipboard_get()方法: http://bugs.python.org/issue14777
奇怪的是,在我通常参考的常见(但非官方的)在线TkInter文档源中并没有提到这种方法。
其他回答
你可以使用winclip32模块! 安装:
pip install winclip32
复制:
import winclip32
winclip32.set_clipboard_data(winclip32.UNICODE_STD_TEXT, "some text")
得到:
import winclip32
print(winclip32.get_clipboard_data(winclip32.UNICODE_STD_TEXT))
欲了解更多信息:https://pypi.org/project/winclip32/
如果(仅当)应用程序已经使用了Qt,您可以使用这个(优点是没有额外的第三方依赖)
from PyQt5.QtWidgets import QApplication
clipboard = QApplication.clipboard()
# get text (if there's text inside instead of e.g. file)
clipboard.text()
# set text
clipboard.setText(s)
这要求已经构造了Qt应用程序对象,因此除非应用程序已经使用了Qt,否则不应该使用它。
此外,通常情况下,在X系统(可能还有其他系统)中,除非使用parcellite或xclipboard之类的东西,否则内容只会持续到应用程序存在为止。
文档:
QGuiApplication Class | Qt GUI 5.15.6 QClipboard Class | Qt GUI 5.15.6
请参见:python - PyQT -复制文件到剪贴板-堆栈溢出
使用stdlib解决方案,没有安全问题
下面的解决方案在Linux中工作,不需要任何额外的库,也没有在shell中执行不需要的代码的风险。
import subprocess
def to_clipboard(text: str) -> None:
sp = subprocess.Popen(["xclip"], stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
sp.communicate(text.encode("utf8"))
注意,在Linux中有多个剪贴板,你用中鼠标(主)和另一个你用按STRG+C,STRG+V。
您可以通过添加一个选择参数来定义使用哪个剪贴板,即["xclip", "-selection", "clipboard"]。 详见man xclip。
如果您使用Windows,只需将xclip替换为clip。
这个解决方案不需要Tkinter,它没有一些Python安装(即我目前使用的自定义构建)。
看起来您需要将win32clipboard添加到站点包中。它是pywin32包的一部分
这是我发现的最简单可靠的方法,如果你可以依赖熊猫。然而,我不认为这是熊猫API的官方部分,所以它可能会打破未来的更新。它的工作为0.25.3
from pandas.io import clipboard
clipboard.copy("test")
推荐文章
- 如何在Python中进行热编码?
- 如何嵌入HTML到IPython输出?
- 在Python生成器上使用“send”函数的目的是什么?
- 是否可以将已编译的.pyc文件反编译为.py文件?
- Django模型表单对象的自动创建日期
- 在Python中包装长行
- 如何计算两个时间串之间的时间间隔
- 在Windows批处理脚本中格式化日期和时间
- 我如何才能找到一个Python函数的参数的数量?
- 映射一个网络驱动器供服务使用
- 您可以使用生成器函数来做什么?
- 将Python诗歌与Docker集成
- 如何在windows中使用命令提示符(cmd)列出文件。我试过在Linux中使用“ls”,但它显示一个错误?
- 提取和保存视频帧
- 使用请求包时出现SSL InsecurePlatform错误