PyQt 剪贴板不会复制到系统剪贴板
以下代码片段似乎根本不影响系统剪贴板:
clipboard = QtGui.QApplication.clipboard()
clipboard.setText(text)
根据 Qt 文档,这就是将文本复制到剪贴板的方式,
为什么它不起作用?
谷歌搜索这个。
它建议在上面的代码之后添加以下代码:
event = QtCore.QEvent(QtCore.QEvent.Clipboard)
app.sendEvent(clipboard, event)
但是这个代码的行为很奇怪:它只在程序退出后将文本复制到剪贴板。 另外,该链接中的一些人报告说这不适用于 Linux。
更新:
没关系,我在其他地方做错了,我没有将复制槽绑定到复制按钮,而是将其连接到“退出”按钮。
The following snippet of code doesn't seem to affect the system clipboard at all:
clipboard = QtGui.QApplication.clipboard()
clipboard.setText(text)
According to the Qt documentation, this is how you copy text to clipboard,
Why isn't it working?
Googling turned this up.
It suggests adding this after the above code:
event = QtCore.QEvent(QtCore.QEvent.Clipboard)
app.sendEvent(clipboard, event)
But this one behaves odd: it only copies the text to the clipboard after the program exits. Plus, some people in that link reported that this doesn't work with linux.
UPDATE:
Nevermind, I was doing something wrong else where, instead of binding the copy slot to the copy button, I connected it to the "quit" button.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可能需要指定模式。
这段代码在 Windows 上对我有用:
You may need to specify the mode.
This code worked for me on windows:
我知道你没有使用 Windows,但这也许会给你一些想法......我在 PyQt 程序中使用它来将 URL 复制到剪贴板:
I know you are not using Windows, but maybe this will give you some ideas... I used this in a PyQt program to copy URLs to the clipboard:
对不起我的英语不好。 我用的是Linux。 我只写了这个命令
QApplication.clipboard().setText("This is text 2 Clipboard")
Sorry for my English. I use linux. I wrote only this command
QApplication.clipboard().setText("This is text 2 clipboard")
您可以尝试 gtk.Clipboard 来自 PyGTK。 我相信它是多平台的。
这可能是您在使用 PyQt 时遇到问题的部分原因 QClipboard 对象:
它指向应用程序剪贴板,而不是系统剪贴板。 您可能必须使用 QClipboard 对象以外的其他东西来实现您的目的。编辑:
引用文档中的上述结论是不正确的。 根据实际的QClipboard的PyQt文档对象:
You might try gtk.Clipboard from PyGTK. I believe it is multi-platform.
This might be part of the reason you're having trouble with PyQt's QClipboard object:
It's pointing to the application clipboard, not the system clipboard. You'll probably have to use something other than the QClipboard object to achieve your end.Edit:
The above conclusion from the cited documentation is incorrect. According to the actual PyQt documentation of the QClipboard object: