#!/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的那个)时,它会将选择<+ em>和主剪贴板替换为yo
。问题:为什么&#34;主要的事情&#34; (mode
默认为QClipboard.Clipboard
毕竟不起作用,而某些应该只能有条件地工作(QClipboard.supportsSelection()
)的工作呢?我怎样才能正常工作?
答案 0 :(得分:0)
我实际上无法在我的Linux系统上重现这个问题:它对我来说都很好。
但是,docs表示剪贴板需要X11上的事件循环:
X11剪贴板是事件驱动的,即剪贴板不会 如果事件循环未运行,则正常运行。同样,它是 建议存储或检索剪贴板的内容 直接响应用户输入事件,例如鼠标按钮或键 按下并释放。您不应存储或检索剪贴板 响应计时器或非用户输入事件的内容。
因此,您可以通过强制处理排队事件来使您的示例在您的系统上工作:
app.clipboard().setText('yo')
app.processEvents()
input()
显然,这是一个人为的“解决方案”,正确的做法是启动事件循环并遵循文档中的建议。