使用 PyQt5 时不断出现此错误clipboard.setMimeData()
QXcbClipboard::setMimeData: Cannot set X11 selection owner
def copy(index, app):
clipboard = app.clipboard()
Mode = clipboard.Clipboard
initialMimeData = clipboard.mimeData(mode = Mode)
import pyautogui
pyautogui.hotkey('ctrl', 'c')
mimeData = clipboard.mimeData(mode = Mode)
clipboards[index-1]["Data"] = mimeData
clipboard.setMimeData(initialMimeData, mode = Mode) #getting the error here
Run Code Online (Sandbox Code Playgroud)
我在 Ubuntu 16.04 上运行这个。为什么会出现此问题以及如何解决它?
我最近从这篇文章中发现了一种通过子进程在python中获取和设置剪贴板数据的方法,这正是我对项目所需要的.
import subprocess
def getClipboardData():
p = subprocess.Popen(['pbpaste'], stdout=subprocess.PIPE)
retcode = p.wait()
data = p.stdout.read()
return data
def setClipboardData(data):
p = subprocess.Popen(['pbcopy'], stdin=subprocess.PIPE)
p.stdin.write(data)
p.stdin.close()
retcode = p.wait()
Run Code Online (Sandbox Code Playgroud)
但它似乎只适用于OS X操作系统.如何在windows,mac和linux中重新创建此功能?
UPDATE
使用我的原始代码和bigbounty提供的windows解决方案,我想我现在只需要一个Linux解决方案.也许是利用xclip或xsel的东西?
python ×2
clipboard ×1
pyautogui ×1
pyqt5 ×1
python-3.x ×1
qt5 ×1
subprocess ×1
ubuntu-16.04 ×1