PyQt剪贴板无法复制到系统剪贴板
下面这段代码似乎对系统剪贴板没有任何影响:
clipboard = QtGui.QApplication.clipboard()
clipboard.setText(text)
根据Qt的文档,这就是复制文本到剪贴板的方法。
可是为什么它不管用呢?
我在网上搜索了一下,找到了这个链接。
它建议在上面的代码后面加上这个:
event = QtCore.QEvent(QtCore.QEvent.Clipboard)
app.sendEvent(clipboard, event)
但这个代码的表现很奇怪:它只在程序退出后才会把文本复制到剪贴板。而且,链接中的一些人还说这个在Linux上不管用。
更新:
没事,我之前在别的地方搞错了,我不是把复制的功能绑定到复制按钮上,而是连接到了“退出”按钮。
4 个回答
1
抱歉我的英语不好。我在用Linux系统。我只写了这个命令:
QApplication.clipboard().setText("这是要放到剪贴板上的文本")
5
我知道你不是在用Windows系统,但也许这能给你一些启发……我在一个PyQt程序中用这个方法来把网址复制到剪贴板:
import win32clipboard
s = 'copy this to the clipboard'
try:
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText(s)
win32clipboard.CloseClipboard()
except:
print 'Could not copy clipboard data.'
16
你可能需要指定一下模式。
这段代码在我的Windows系统上是可以正常工作的:
cb = QtGui.QApplication.clipboard()
cb.clear(mode=cb.Clipboard )
cb.setText("Clipboard Text", mode=cb.Clipboard)