Я не могу скопировать несколько изображений в буфер обмена

У меня в папке есть несколько файлов 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)
Другие вопросы по тегам