[英]PyQt clipboard doesn't copy to system clipboard
以下代码片段似乎根本不会影响系统剪贴板:
clipboard = QtGui.QApplication.clipboard()
clipboard.setText(text)
根据 Qt 文档,这是将文本复制到剪贴板的方式,
为什么它不起作用?
谷歌搜索发现了这一点。
它建议在上述代码之后添加:
event = QtCore.QEvent(QtCore.QEvent.Clipboard)
app.sendEvent(clipboard, event)
但是这个行为很奇怪:它只在程序退出后将文本复制到剪贴板。 另外,该链接中的一些人报告说这不适用于 linux。
没关系,我在其他地方做错了,我没有将复制槽绑定到复制按钮,而是将它连接到“退出”按钮。
您可能需要指定模式。
这段代码在 Windows 上对我有用:
cb = QtGui.QApplication.clipboard()
cb.clear(mode=cb.Clipboard )
cb.setText("Clipboard Text", mode=cb.Clipboard)
我知道你没有使用 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.'
你可以试试PyGTK 的gtk.Clipboard 。 我相信它是多平台的。
这可能是您在使用 PyQt 的QClipboard对象时遇到问题的部分原因:
QClipboard QApplication.clipboard()
返回指向应用程序全局剪贴板的指针。
注意:在访问剪贴板之前,应该已经构建了 QApplication 对象。
它指向
应用程序剪贴板,而不是系统剪贴板。
您可能必须使用 QClipboard 对象以外的其他东西来实现您的目的。
编辑:
上述引用文档的结论是不正确的。 根据QClipboard对象的实际PyQt 文档:
QClipboard 类提供对窗口系统剪贴板的访问。
对不起我的英语不好。 我用的是linux。 我只写了这个命令
QApplication.clipboard().setText("这是文本 2 剪贴板")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.