python - 将多个图像复制到剪贴板
问题描述
我在一个文件夹中有多个 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)
此代码只会将一个随机图像从我设置的路径复制到剪贴板。如果我遍历所有文件,它会崩溃。
解决方案
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)
推荐阅读
- javascript - Javascript获取文件名不起作用
- javascript - 如何推迟函数执行?
- c# - 如何使用 C# 在 SQL 中存储按钮单击历史时间
- ruby-on-rails - 活动记录回调中的陈旧关联
- c# - 将现有 FileStream 的“FileShare”从“Read”更改为“None”
- typescript - 直接从 Angular 应用上传到 Azure 存储
- ruby-on-rails - form_with 不应该重定向
- vue.js - Vuelidate复选框验证
- node.js - 如何在没有 require('fs') 的情况下读取文件 - NodeJS
- android - Android上的标准化图像尺寸