前言
在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:")
最后一个参数是默认打开的所处位置。
示例与上面二个相似,这里就不再做详细介绍了。