PyQT - 将文件复制到剪贴板

9

你是在应用程序内复制和粘贴,还是需要将文件复制到外部文件夹窗口? - Stephen Terry
外部文件夹。与文本一样。 - Qiao
备注:应该是 QtGui.QGuiApplication。(或者 QtWidgets.QApplication - user202729
2个回答

9

剪贴板数据使用 QMimeData 类进行建模,可以包含URL列表,包括本地文件系统URL。

from PyQt4 import QtCore, QtGui

app = QtGui.QApplication([])

data = QtCore.QMimeData()
url = QtCore.QUrl.fromLocalFile('c:\\foo.file')
data.setUrls([url])

app.clipboard().setMimeData(data)

2
请记住,X11剪贴板需要事件循环运行(QApplication.exec_)。 - Artur Gaspar

5

创建文件的QUrls,将它们存储在QMimeData中,并将QMimeData粘贴到QClipboard中。(适用于多个文件,在KDE 4上进行了测试,不确定是否适用于Windows。)

import sys

from PyQt4.QtCore import QMimeData, QUrl
from PyQt4.QtGui import QApplication

app = QApplication(sys.argv)

# Create the urls.
url1 = QUrl('file1')
url2 = QUrl('file2')

# Create the mime data with the urls.
mime_data = QMimeData()
mime_data.setUrls([url1, url2])

# Copy the mime data to the clipboard.
clipboard = QApplication.clipboard()
clipboard.setMimeData(mime_data)

# Run the main loop.
# The X11 clipboard needs the event loop running.
sys.exit(app.exec_())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接