#!/usr/bin/python
from PyQt4.QtGui import QApplication, QClipboard
import sys
app = QApplication(sys.argv)
QApplication.clipboard().setText('yo', mode=QClipboard.Clipboard)
input() #wait for input
当我设置
mode=QClipboard.Clipboard
(默认值)时,它不起作用。它将旧数据保留在剪贴板和选择剪贴板中。当我将其更改为
mode=QClipboard.Selection
(x的特定值)时,它将选择和主剪贴板都替换为yo
。问题:为什么“主要的事情”(
mode
最终默认为QClipboard.Clipboard
)不起作用,而应该只在条件下起作用的事情(QClipboard.supportsSelection()
)起作用?我怎样才能使它正常工作? 最佳答案
我不能在我的linux系统上重现这个问题:它对我来说一切正常。
但是,docs表示剪贴板在x11上需要一个事件循环:
X11剪贴板是事件驱动的,即剪贴板不会
如果事件循环未运行,则正常运行。同样,它是
建议存储或检索剪贴板的内容
直接响应用户输入事件,如鼠标按钮或键
出版发行。不应存储或检索剪贴板
响应计时器或非用户输入事件的内容。
因此,通过强制处理排队事件,您可以让示例在系统上工作,如下所示:
app.clipboard().setText('yo')
app.processEvents()
input()
不过,显然这是一个人为的“解决方案”,正确的做法是启动事件循环并遵循文档中的建议。