PyQT - скопировать файл в буфер обмена - PullRequest
3 голосов
/ 19 мая 2011

Можно ли скопировать файл в буфер обмена?
Как будто он был нажат "ctrl + c".Так что, когда я нажимаю "Ctrl + V" в какой-то папке, он появится здесь.

http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qclipboard.html - не могу найти ничего о файлах.

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

Возможно ли это вообще?

Ответы [ 2 ]

4 голосов
/ 20 мая 2011

Данные буфера обмена моделируются с помощью класса 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 голосов
/ 20 мая 2011

Создайте 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_())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...