我正在使用名为 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/