PyQT - 将文件复制到剪贴板

问题描述:

是否可以将文件复制到剪贴板?
就好像它被按下“ctrl + c”。所以当我在某个文件夹中按“ctrl + v”时,它会出现在这里。PyQT - 将文件复制到剪贴板

http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qclipboard.html - 找不到关于文件的任何信息。

file = 'C:\foo.file' 
clipboard = QtGui.QApplication.clipboard() 
???? 

是否有可能?

+0

您复制和应用程序中粘贴或者你需要复制该文件到外部文件夹窗口? – 2011-05-19 18:24:53

+0

外部文件夹。与文字一样。 – Qiao 2011-05-19 18:26:36

剪贴板数据使用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_')。 – 2011-05-20 22:40:22

创建文件的QUrls,将它们存储在QMimeData中并将QMimeData粘贴到QClipboard。 (Works的多个文件,在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_()) 
+0

在使用'QUrl.fromLocalFile()'之后在Windows上工作 – Qiao 2011-05-20 06:14:05