- PyQt 教程
- PyQt - 首页
- PyQt - 简介
- PyQt - 环境配置
- PyQt - Hello World
- PyQt - 主要类
- PyQt - 使用 Qt Designer
- PyQt - 元对象
- PyQt 信号与槽
- PyQt - 信号和槽
- PyQt - 支持和信号
- PyQt - 未绑定和已绑定信号
- PyQt - 使用 PyQtSignal 创建新的信号
- PyQt - 连接、断开和发射信号
- PyQt - 槽装饰器
- PyQt - 槽连接
- PyQt 布局
- PyQt - 布局管理
- PyQt - QBoxLayout
- PyQt - QGridLayout
- PyQt - QFormLayout
- PyQt - QHBoxLayout
- PyQt - QVBoxLayout
- PyQt - QStackedLayout
- PyQt - QGraphicsGridLayout
- PyQt - QGraphicsAnchorLayout
- PyQt - QGraphicsLayout
- PyQt - QGraphicsLinearLayout
- PyQt 基本组件
- PyQt - 基本组件
- PyQt - QLabel 组件
- PyQt - QLineEdit 组件
- PyQt - QPushButton 组件
- PyQt - QRadioButton 组件
- PyQt - QCheckBox 组件
- PyQt - QComboBox 组件
- PyQt - QSpinBox 组件
- PyQt - QMessageBox
- PyQt - QDialogButtonBox 组件
- PyQt - QFontComboBox 组件
- PyQt - QDoubleSpinBox 组件
- PyQt - QToolBox 组件
- PyQt - QDialog 类
- PyQt - QMessageBox
- PyQt - 多文档界面
- PyQt - 拖放
- PyQt 绘图 API
- PyQt - 绘图 API
- PyQt 数据库
- PyQt - 数据库处理
- PyQt 基础知识
- PyQt - BrushStyle 常量
- PyQt - QClipboard
- PyQt - QPixmap 类
- PyQt 有用资源
- PyQt - 快速指南
- PyQt - 有用资源
- PyQt - 讨论
PyQt - QFileDialog 组件
此组件是一个文件选择对话框。它允许用户浏览文件系统并选择要打开或保存的文件。该对话框可以通过静态函数或调用对话框对象的 exec_() 函数来调用。
QFileDialog 类的静态函数 (getOpenFileName() 和 getSaveFileName()) 调用当前操作系统的原生文件对话框。
还可以应用文件过滤器以仅显示指定扩展名的文件。还可以设置起始目录和默认文件名。
QFileDialog 类重要的方法和枚举列在下面的表格中:
序号 | 方法及描述 |
---|---|
1 |
getOpenFileName() 返回用户选择要打开的文件名 |
2 |
getSaveFileName() 使用用户选择的文件名保存文件 |
3 |
setacceptMode() 确定文件框是充当打开对话框还是保存对话框 QFileDialog.AcceptOpen QFileDialog.AcceptSave |
4 |
setFileMode() 可选择文件的类型。枚举常量为: QFileDialog.AnyFile QFileDialog.ExistingFile QFileDialog.Directory QFileDialog.ExistingFiles |
5 |
setFilter() 仅显示具有指定扩展名的文件 |
示例
以下示例演示了调用文件对话框的两种方法。
第一个按钮通过静态方法调用文件对话框。
fname = QFileDialog.getOpenFileName(self, 'Open file', 'c:\\',"Image files (*.jpg *.gif)")
选定的图像文件显示在标签组件上。第二个按钮通过在 QFileDialog 对象上调用 exec_() 方法来调用文件对话框。
dlg = QFileDialog() dlg.setFileMode(QFileDialog.AnyFile) dlg.setFilter("Text files (*.txt)") filenames = QStringList() if dlg.exec_(): filenames = dlg.selectedFiles()
选定文件的内容显示在TextEdit组件中。
f = open(filenames[0], 'r') with f: data = f.read() self.contents.setText(data)
完整代码如下:
import sys from PyQt4.QtCore import * from PyQt4.QtGui import * class filedialogdemo(QWidget): def __init__(self, parent = None): super(filedialogdemo, self).__init__(parent) layout = QVBoxLayout() self.btn = QPushButton("QFileDialog static method demo") self.btn.clicked.connect(self.getfile) layout.addWidget(self.btn) self.le = QLabel("Hello") layout.addWidget(self.le) self.btn1 = QPushButton("QFileDialog object") self.btn1.clicked.connect(self.getfiles) layout.addWidget(self.btn1) self.contents = QTextEdit() layout.addWidget(self.contents) self.setLayout(layout) self.setWindowTitle("File Dialog demo") def getfile(self): fname = QFileDialog.getOpenFileName(self, 'Open file', 'c:\\',"Image files (*.jpg *.gif)") self.le.setPixmap(QPixmap(fname)) def getfiles(self): dlg = QFileDialog() dlg.setFileMode(QFileDialog.AnyFile) dlg.setFilter("Text files (*.txt)") filenames = QStringList() if dlg.exec_(): filenames = dlg.selectedFiles() f = open(filenames[0], 'r') with f: data = f.read() self.contents.setText(data) def main(): app = QApplication(sys.argv) ex = filedialogdemo() ex.show() sys.exit(app.exec_()) if __name__ == '__main__': main()
以上代码产生以下输出:
广告