### PyQt打开保存对话框的方法和使用详解 #### 一、控件说明 `QFileDialog` 是 PyQT 中用于打开和保存文件的一个标准对话框组件,它继承自 `QDialog` 类。通过 `QFileDialog`,我们可以轻松地实现让用户选择文件或文件夹的功能,并且能够根据需求设置文件过滤器,来限定显示特定类型的文件。 #### 二、QFileDialog 类的常用方法 ##### 1. getOpenFileName() 此方法用于打开文件对话框,并返回用户所选择文件的完整路径名。例如: ```python filename, _ = QFileDialog.getOpenFileName(self, '打开文件', 'D:\\', 'Image files (*.jpg *.png)') ``` - 第一个参数:指定父窗口,通常为 `self` 或当前窗口。 - 第二个参数:对话框的标题,如 “打开文件”。 - 第三个参数:默认打开的目录路径。例如,使用 `'D:\\'` 表示 D 盘根目录。 - 第四个参数:文件扩展名过滤器,用以限制只显示特定类型的文件。例如 `'Image files (*.jpg *.png)'` 表示只显示 `.jpg` 和 `.png` 图片文件。 ##### 2. getSaveFileName() 此方法用于打开保存文件的对话框,并返回用户选择的文件名和路径。例如: ```python filename, _ = QFileDialog.getSaveFileName(self, '保存文件', 'D:\\', 'Text files (*.txt)') ``` - 参数与 `getOpenFileName()` 类似,只是这里选择的是保存文件而不是打开文件。 ##### 3. setFileMode() 此方法用于设置对话框的文件模式,即可以选择的文件类型。例如: ```python dialog = QFileDialog() dialog.setFileMode(QFileDialog.AnyFile) ``` - `QFileDialog.AnyFile`: 可以选择任何文件。 - `QFileDialog.ExistingFile`: 只能选择已存在的文件。 - `QFileDialog.Directory`: 只能选择文件夹。 - `QFileDialog.ExistingFiles`: 可以选择多个已存在的文件。 ##### 4. setFilter() 此方法用于设置文件过滤器,只显示过滤器允许的文件类型。例如: ```python dialog.setFilter(QDir.Files) ``` - `QDir.Files` 表示只显示文件,不显示文件夹。 #### 三、应用举例 下面是一个简单的应用实例,展示了如何使用 `QFileDialog` 来打开图片文件和文本文件: ```python import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * class FileDialogDemo(QWidget): def __init__(self, parent=None): super(FileDialogDemo, self).__init__(parent) layout = QVBoxLayout() # 加载图片按钮 self.btn = QPushButton("加载图片") self.btn.clicked.connect(self.get_file) layout.addWidget(self.btn) # 显示图片 self.le = QLabel("") layout.addWidget(self.le) # 加载文本文件按钮 self.btn1 = QPushButton("加载文本文件") self.btn1.clicked.connect(self.get_files) layout.addWidget(self.btn1) # 显示文本 self.text = QTextEdit() layout.addWidget(self.text) self.setLayout(layout) self.setWindowTitle("FileDialog例子") def get_file(self): fname, _ = QFileDialog.getOpenFileName(self, '打开文件', "D:\\", "Image files (*.jpg *.gif)") self.le.setPixmap(QPixmap(fname)) def get_files(self): dlg = QFileDialog() dlg.setFileMode(QFileDialog.AnyFile) dlg.setFilter(QDir.Files) if dlg.exec_(): filenames = dlg.selectedFiles() with open(filenames[0], 'r') as f: data = f.read() self.text.setText(data) if __name__ == "__main__": app = QApplication(sys.argv) win = FileDialogDemo() win.show() sys.exit(app.exec_()) ``` 在这个例子中,我们创建了一个窗口,其中包含两个按钮:“加载图片”和“加载文本文件”。点击这些按钮时会弹出相应的对话框供用户选择文件。此外,还展示了如何根据用户的选择来更新界面元素(如 `QLabel` 和 `QTextEdit`)。 以上内容详细介绍了 PyQT 中 `QFileDialog` 的基本用法及示例代码,希望能帮助读者更好地理解和使用这个组件。
- 粉丝: 7
- 资源: 930
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助