0

我在一个文件夹中有多个 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)

此代码只会将一个随机图像从我设置的路径复制到剪贴板。如果我遍历所有文件,它会崩溃。

在此处输入图像描述

4

1 回答 1

1

OP 的问题(如图所示)是他正在创建几个 QGuiApplications 并且由于它是单例而无法完成。

解决方案是在for循环之前创建一个QGuiAplication,然后通过静态方法访问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)
于 2021-05-05T03:51:20.540 回答