微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将多个图像复制到剪贴板

如何解决将多个图像复制到剪贴板

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

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

enter image description here

解决方法

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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。