Bootstrap

PySide6进阶教程 | 实现单、多个各类文件的导入

在这里插入图片描述


前言

在PySide6中实现文件导入功能可以通过使用QFileDialog类来完成。QFileDialog提供了多种模式,可以根据需要选择单个文件或多个文件的导入。 本章将详细介绍如何利用QFileDialog类来实现单个文件或多个文件的导入功能,并结合按钮组件来触发相关事件。


🚀🚀🚀 Pyside6实战教程专栏目录入口:点击跳转


一、单文件导入

核心代码:

file_name, _ = QFileDialog.getOpenFileName(self, "选择单个文件", "", "All Files (*)")

这样打开的默认位置是程序文件所在的位置,允许用户选择一个任意文件。如果需要固定默认打开的位置,可对其进行修改,添加绝对路径

file_name, _ = QFileDialog.getOpenFileName(self, "选择单个文件", "D:", "All Files (*)")

示例

from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget, QLabel, QFileDialog

class FileImportApp(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("File Import App")

        # 设置中心小部件和布局
        central_widget = QWidget(self)
        self.setCentralWidget(central_widget)
        layout = QVBoxLayout(central_widget)

        # 添加标签和按钮
        self.label = QLabel("示例")
        layout.addWidget(self.label)

        button = QPushButton("打开文件")
        button.clicked.connect(self.select_file)
        layout.addWidget(button)

    def select_file(self):
        file_name, _ = QFileDialog.getOpenFileName(self, "Select File", "", "All Files (*)")
        if file_name:
            self.label.setText(f"Selected file: {file_name}")

if __name__ == "__main__":
    app = QApplication([])
    window = FileImportApp()
    window.show()
    app.exec()

二、多文件导入

核心代码:

files, _ = QFileDialog.getOpenFileNames(self, "选择多个文件", "", "All Files (*)")

使用QFileDialog.getOpenFileNames()返回的files参数是一个数组,数组里每个元素是一个文件路径名

示例

修改上面的程序,使其能够选择多个文件,并将它们的路径显示在一个列表中。

from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget, QListWidget, QFileDialog


class MultiFileImportApp(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("Multiple File Import App")

        central_widget = QWidget()
        self.setCentralWidget(central_widget)

        layout = QVBoxLayout()
        self.file_list = QListWidget()
        layout.addWidget(self.file_list)

        button = QPushButton("选择多个文件")
        button.clicked.connect(self.select_files)
        layout.addWidget(button)
        central_widget.setLayout(layout)

    def select_files(self):
        files, _ = QFileDialog.getOpenFileNames(self, "Select Files", "", "All Files (*)")
        if files:
            self.file_list.clear()
            for file in files:
                self.file_list.addItem(file)


if __name__ == "__main__":
    app = QApplication([])
    window = MultiFileImportApp()
    window.show()
    app.exec()

三、文件夹导入

核心代码:

folder_name = QFileDialog.getExistingDirectory(self, "选择文件夹","D:")

最后一个参数是默认打开的所处位置。

示例与上面二个相似,这里就不再做详细介绍了。

在这里插入图片描述

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;