PyQt剪贴板不会复制到系统剪贴板

has*_*sen 9 python clipboard qt pyqt

以下代码片段似乎根本不会影响系统剪贴板:

clipboard = QtGui.QApplication.clipboard()
clipboard.setText(text)
Run Code Online (Sandbox Code Playgroud)

根据Qt文档,这是你如何将文本复制到剪贴板,

为什么不工作?

谷歌搜索变成这样了.

它建议在上面的代码之后添加:

event = QtCore.QEvent(QtCore.QEvent.Clipboard)
app.sendEvent(clipboard, event)
Run Code Online (Sandbox Code Playgroud)

但是这个表现很奇怪:它只在程序退出后将文本复制到剪贴板.此外,该链接中的一些人报告说这不适用于linux.

更新:

没关系,我做错其他的地方,而不是将复制槽绑定到复制按钮,我将它连接到"退出"按钮.

Zv_*_*oDD 11

您可能需要指定模式.

这段代码在Windows上对我有用:

    cb = QtGui.QApplication.clipboard()
    cb.clear(mode=cb.Clipboard )
    cb.setText("Clipboard Text", mode=cb.Clipboard)
Run Code Online (Sandbox Code Playgroud)


Jas*_*oon 5

我知道你没有使用 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.'
Run Code Online (Sandbox Code Playgroud)