Python win32clipboard数据被截断

标签 python wxpython clipboard objectlistview

我正在使用名为 ObjectListView 的 Python 模块作为 wxPython 的补充。我正在使用 python2.7 和 wxPython 2.8.1.2.1

我的问题是将信息复制到 Windows 剪贴板。模块 ObjectListView 有一个部分使用 win32clipboard 在剪贴板中存储信息。但是,在检索信息时,仅返回第一个字符。 。 .没有别的了。

    try:
        win32clipboard.OpenClipboard(0)
        win32clipboard.EmptyClipboard()
        cfText = 1
        print txt #prints 'hello world'
        win32clipboard.SetClipboardData(cfText, txt)
        print htmlForClipboard #prints html output
        cfHtml = win32clipboard.RegisterClipboardFormat("HTML Format")
        win32clipboard.SetClipboardData(cfHtml, htmlForClipboard)
        print win32clipboard.GetClipboardData() #prints 'h'
    finally:
        win32clipboard.CloseClipboard()

这是模块中的代码。我已输入打印语句进行调试。我已经评论了打印的文本。该问题仅发生在该模块中。如果我在 python 解释器中运行该代码段,它会正常运行并且剪贴板会返回整个输入。

什么可能导致此问题?

最佳答案

当字符串被剪切到第一个字符时,我首先想到的是 UTF-16 被解释为 8 位字符。对于大多数欧洲语言,2 字节 UTF-16 序列的第二个字节为零,并导致字符串提前终止。试试这个:

print win32clipboard.GetClipboardData().decode('utf-16le')

在将数据设置到剪贴板时,我还会使用encode('utf-16le')

关于Python win32clipboard数据被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13936169/

相关文章:

python - 在 Python 2.7 的 lambda 函数中使用 print 函数时出错

python - 如何在 Python 中检查操作系统是否是 Vista?

python - wxPython - 自动关闭嵌套模式对话框

python - 使用 wxpython 编写剪贴板管理器?

java - 处理已弃用的 android.text.ClipboardManager

string - 剪贴板查看器用于编程目的

Python 3.3 - 格式化表中的信息

python - 封闭式导入在 Python 中的工作原理

python - 使用多个参数启动 python pdb?

python - 如何从内存数据创建一个 wx.Image 对象?