复制字符串 - Python

3

大家好,我想这很容易,但是我似乎找不到如何复制一个字符串的方法。就像在文本上按CTRL+C一样将其复制到系统中。

基本上,我想复制一个字符串,以便例如粘贴(ctrl+v)。

对于这样一个琐碎的问题,抱歉哈哈。


根据操作系统而定,我想知道你使用的是什么? - cobbal
Windows,虽然我问,但如果应用程序应该是多平台的呢?会有办法吗? - dpswt
类似的问题有很多好的答案,可以参考这个链接:https://dev59.com/-XRB5IYBdhLWcg3wl4EQ - Aaron D
可能是重复的问题:如何使用Python将字符串复制到Windows剪贴板? - Cees Timmerman
4个回答

4

对于Windows系统,您需要使用win32clipboard。 您需要pywin32

对于GTK(至少在GNU / Linux上),您可以使用pygtk

编辑:由于您稍微晚了点提到您正在使用wxPython,他们实际上也有一个模块用于这个,wx.Clipboard


如果这个应用程序需要支持多个平台,那么是否有可能实现? - dpswt
我认为你需要测试平台,然后根据这里提到的方法之一进行操作。 - cobbal
GTK可以在Windows上运行,因此很可能(但未经测试)您可以在两个平台上使用它。请参阅http://www.pygtk.org/downloads.html和http://www.gtk.org/download-windows.html#StableRelease。 - Matthew Flaschen

2
这取决于操作系统。在Linux上,由于X的奇怪选择模型,最简单的方法是使用popen('xsel -pi'),并将文本写入该管道。
例如:(我认为)
def select_xsel(text):
    import subprocess
    xsel_proc = subprocess.Popen(['xsel', '-pi'], stdin=subprocess.PIPE)
    xsel_proc.communicate(some_text)

如评论中所指出,在Mac上,您可以使用/usr/bin/pbcopy命令,就像这样:

xsel_proc = subprocess.Popen(['pbcopy'], stdin=subprocess.PIPE)

如果你想支持不同的操作系统,可以结合使用os.name来确定使用哪种方法:

import os, subprocess
def select_text(text):
    if os.name == "posix":
        # try Mac first
        try:
            xsel_proc = subprocess.Popen(['pbcopy'], stdin=subprocess.PIPE)
        except:
            # try Linux version
            xsel_proc = subprocess.Popen(['xsel', '-pi'], stdin=subprocess.PIPE)
    elif os.name == "nt":
        # Windows...

2
在 Mac 上,执行相同的操作,只需使用 /usr/bin/pbcopy - cobbal
感谢两位的回复和评论! - dpswt

2
对于Windows系统,你可以按照这个链接的方法进行操作,比创建新的子进程等方式要简单得多......

2

如果需要一个多平台的解决方案,您将需要使用跨平台框架,如wxPython或PyQt - 它们都支持以独立于平台的方式读写系统剪贴板。


嗯,我实际上正在使用wxPython。 - dpswt

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