我试图使一个基本的Windows应用程序构建出用户输入的字符串,然后将其添加到剪贴板。如何使用Python将字符串复制到剪贴板?


当前回答

看起来您需要将win32clipboard添加到站点包中。它是pywin32包的一部分

其他回答

这是我发现的最简单可靠的方法,如果你可以依赖熊猫。然而,我不认为这是熊猫API的官方部分,所以它可能会打破未来的更新。它的工作为0.25.3

from pandas.io import clipboard
clipboard.copy("test")

小部件还具有名为.clipboard_get()的方法,该方法返回剪贴板的内容(除非根据剪贴板中的数据类型发生某种错误)。

在这个错误报告中提到了clipboard_get()方法: http://bugs.python.org/issue14777

奇怪的是,在我通常参考的常见(但非官方的)在线TkInter文档源中并没有提到这种方法。

看起来您需要将win32clipboard添加到站点包中。它是pywin32包的一部分

我的多平台解决方案基于这个问题:

import subprocess
import distutils.spawn

def clipit(text):
    if distutils.spawn.find_executable("xclip"):
        # for Linux
        subprocess.run(["xclip", "-i"], input=text.encode("utf8"))
    elif distutils.spawn.find_executable("xsel"):
        # for Linux
        subprocess.run(["xsel", "--input"], input=text.encode("utf8"))
    elif distutils.spawn.find_executable("clip"):
        # for Windows
        subprocess.run(["clip"], input=text.encode("utf8"))
    else:
        import pyperclip

        print("I use module pyperclip.")
        pyperclip.copy(text)

复制剪贴板的代码片段:

在名为(clipboard.py)的模块中创建包装器Python代码:

import clr
clr.AddReference('System.Windows.Forms')
from System.Windows.Forms import Clipboard
def setText(text):
    Clipboard.SetText(text)

def getText():
    return Clipboard.GetText()

然后将上述模块导入到代码中。

import io
import clipboard
code = clipboard.getText()
print code
code = "abcd"
clipboard.setText(code)

我必须赞扬博客文章在IronPython剪贴板访问。