以下代码片段似乎根本不会影响系统剪贴板:
clipboard = QtGui.QApplication.clipboard()
clipboard.setText(text)
根据Qt文档,这是你将文本复制到剪贴板的方式,
为什么不起作用?
谷歌搜索转向this。
建议在上面的代码之后添加:
event = QtCore.QEvent(QtCore.QEvent.Clipboard)
app.sendEvent(clipboard, event)
但是这个表现很奇怪:它只在程序退出后将文本复制到剪贴板。此外,该链接中的一些人报告说这不适用于linux。
没关系,我做错了其他地方,而不是将复制槽绑定到复制按钮,我把它连接到“退出”按钮。
答案 0 :(得分:10)
您可能需要指定mode。
此代码在Windows上为我工作:
cb = QtGui.QApplication.clipboard()
cb.clear(mode=cb.Clipboard )
cb.setText("Clipboard Text", mode=cb.Clipboard)
答案 1 :(得分:4)
我知道你没有使用Windows,但也许这会给你一些想法......我在PyQt程序中使用它来将URL复制到剪贴板:
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.'
答案 2 :(得分:0)
您可以从gtk.Clipboard尝试PyGTK。我相信它是多平台的。
这可能是您在使用PyQt QClipboard对象时遇到问题的部分原因:
QClipboard QApplication.clipboard()
返回指向应用程序的指针 全局剪贴板。
注意:QApplication对象应该 已经建成之前 访问剪贴板。
它指向应用程序剪贴板,而不是系统剪贴板。您可能必须使用QClipboard对象以外的其他东西来实现目标。
修改强>
引用文献中的上述结论不正确。根据实际的PyQt documentation of the QClipboard对象:
QClipboard类提供对窗口系统剪贴板的访问。
答案 3 :(得分:-1)
对不起我的英语。我用的是linux。我只写了这个命令
QApplication.clipboard().setText("这是文本 2 剪贴板")