Я не могу скопировать несколько изображений в буфер обмена
У меня в папке есть несколько файлов JPG. Я просто хочу скопировать их все в буфер обмена за один раз, чтобы, когда я это сделаю ctrl+, vя смогу их пропустить
Shutil будет копировать и вставлять файлы с dict на dict
from PyQt6 import QtCore, QtGui
for _ in range(10):
app = QtGui.QGuiApplication([])
data = QtCore.QMimeData()
url = QtCore.QUrl.fromLocalFile(full_file_name)
data.setUrls([url])
app.clipboard().setMimeData(data)
Этот код будет копировать в буфер обмена только одно случайное изображение из пути, который я установил, даже если я зацикливаю файлы, которые он выдает.
1 ответ
Решение
Проблема OP (показанного на изображении) заключается в том, что он создает несколько приложений QGuiApplications, а это невозможно, так как это одноэлементный.
Решение состоит в том, чтобы создать QGuiAplication перед циклом for, а затем получить доступ через статический метод
QGuiApplication.clipboard()
:
import os
from PyQt6 import QtCore, QtGui
path = os.getcwd()
urls = []
it = QtCore.QDirIterator(path, ("*.jpg",), QtCore.QDir.Filters.Files)
while it.hasNext():
url = QtCore.QUrl.fromLocalFile(it.next())
urls.append(url)
if QtGui.QGuiApplication.instance() is None:
app = QtGui.QGuiApplication([])
data = QtCore.QMimeData()
data.setUrls(urls)
QtGui.QGuiApplication.clipboard().setMimeData(data)