【问题标题】:python pyqt5 add file name to getSaveFileNamepython pyqt5将文件名添加到getSaveFileName
【发布时间】:2020-10-05 19:20:50
【问题描述】:

我正在尝试为QFileDialog() 添加一个默认名称,如下图所示。

这是我得到的(没有文件名)

这就是我想要实现的目标,而无需手动输入,我想通过 file_name 抛出一个函数并让该名称显示在那里。

这是我试图让它工作的代码:

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5 import *
import sys
class mainwindowUI(QMainWindow):
    def __init__(self):
        super(mainwindowUI, self).__init__()
        self.exportFiles('test.mp3')
    def exportFiles(self,file_name):
        filename, _ = QFileDialog.getSaveFileName(self, "Save audio file", "", "Audio Files (*.mp3)")
        if filename:
            print(filename)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = mainwindowUI()
    app.exec_()

我尝试添加选项:

filename, _ = QFileDialog.getSaveFileName(self, "Save audio file", "", "Audio Files (*.mp3)", options=QFileDialog.setLabelText(file_name))

但这是不正确的,我不知道如何使它工作......

有人知道如何添加文件名来保存文件对话框吗?

【问题讨论】:

    标签: python pyqt5 qfiledialog


    【解决方案1】:

    第三个参数表示初始名称:

    def exportFiles(self, file_name):
        default_dir ="/home/qt_user/Documents"
        default_filename = os.path.join(default_dir, file_name)
        filename, _ = QFileDialog.getSaveFileName(
            self, "Save audio file", default_filename, "Audio Files (*.mp3)"
        )
        if filename:
            print(filename)
    

    【讨论】:

    • 效果很好,但是如果我想添加一个默认目录位置怎么办?
    • @JareBear 所以你必须将默认目录与文件名连接起来
    • 这很完美!正是我想要的,非常感谢。
    【解决方案2】:

    首先创建一个另存为操作

    self.saveas=QAction(QtGui.QIcon('saveas.png'),'save-as')
    

    将另存为操作添加到工具栏

    toolbar=self.addToolbar('toolbar');
    toolbar.addAction(self.saveas);
    

    将此作为您的 QFileDialog 代码

    Fn, _=QFileDialog.getSaveFileName(self,'export pdf',file_name,'Pdf files(.pdf);;All files()');
    

    将信号连接到插槽时这样做

    Self.Saveas.toggled.connect(self.exportfiles('name of default file');
    

    【讨论】:

    • 您的回答存在一些重要问题。 toggled 信号仅适用于可检查的操作,因此在这种情况下应使用 triggered 信号。该行的大小写错误,括号没有关闭(也不需要分号)并且连接的参数应该是可调用的,而在这种情况下,它将立即执行对exportfiles的调用并尽快返回None当对话框关闭时,导致崩溃。
    • 另外,虽然 QAction 应该接受没有父级的构造函数,但在 PyQt(至少到 5.7)中,构造函数中需要父级参数,因此通常最好在创建独立操作时添加它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多