gpt4 book ai didi

python - 如何右键保存图片或文件?

转载 作者:太空宇宙 更新时间:2023-11-03 19:44:50 24 4
gpt4 key购买 nike

我编写了 pyqt5 代码来显示本地计算机中的图片或文件。此后,我不知道将窗口中显示的图片或文件保存在其他路径上。我想到的唯一方法就是复制它们。任何建议或提示将不胜感激。

这是显示图片或文件的代码:

import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *

class fileDialogdemo(QWidget):
def __init__(self,parent=None):
super(fileDialogdemo, self).__init__(parent)
layout=QVBoxLayout()

self.btn=QPushButton("Load Picture")
self.btn.clicked.connect(self.getimage)
layout.addWidget(self.btn)

self.le=QLabel('')
layout.addWidget(self.le)

self.btn1=QPushButton('Load text file')
self.btn1.clicked.connect(self.getFiles)
layout.addWidget(self.btn1)

self.contents=QTextEdit()
layout.addWidget(self.contents)

self.setLayout(layout)
self.setWindowTitle('File Dialog ')

def getimage(self):
image_file,_=QFileDialog.getOpenFileName(self,'Open file','C:\\','Image files (*.jpg *.gif *.png *.jpeg)')
self.le.setPixmap(QPixmap(image_file))

def getFiles(self):
dig=QFileDialog()
dig.setFileMode(QFileDialog.AnyFile)
dig.setFilter(QDir.Files)

if dig.exec_():
filenames=dig.selectedFiles()
f=open(filenames[0],'r')

with f:
data=f.read()
self.contents.setText(data)

if __name__ == '__main__':
app=QApplication(sys.argv)
ex=fileDialogdemo()
ex.show()
sys.exit(app.exec_())

这是我正在尝试保存的代码,但有问题:

def contextMenuEvent(self, event):
cmenu = QMenu(self)
saveAct = cmenu.addAction("Save as")
action = cmenu.exec_(self.mapToGlobal(event.pos()))
if action == saveAct:
filename = QFileDialog.getSaveFileName(self)
shutil.copyfile(self.image_file, filename)

除了copy的思路,还有什么更好的办法吗?

最佳答案

请勿复制图像,因为没有人保证加载图像后原始图像位于同一位置或仍然存在。相反,从 QLabel 检索 QPixmap 并保存它:

def contextMenuEvent(self, event):
cmenu = QMenu(self)
saveAct = cmenu.addAction("Save as")
action = cmenu.exec_(self.mapToGlobal(event.pos()))
if action == saveAct:
filename, _ = QFileDialog.getSaveFileName(self)
pixmap = self.le.pixmap()
if pixmap is not None and filename:
pixmap.save(filename)

关于python - 如何右键保存图片或文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60210071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com