2011-05-19 255 views
2

是否可以將文件複製到剪貼板?
就好像它被按下「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

回答

4

剪貼板數據使用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

2

創建文件的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