环境:python3.4+qt5
QFileDialog类提供了一个供用户选择文件或者目录的对话框。
创建一个QfileDialog最简单的方法是调用静态函数,就是直接应用平台提供的文件对话框(windows,linux等)。
一,调用静态函数法:
比如说下面的方法openFile是主窗口类里的method:
fileName = QFileDialog.getOpenFileName(self,
r'创建Excel并保存',
r'F:\Python\201608101\test1\Excel',
r'Excel Files(*.xls *.xlsx);;Word Files(*.doc)')
调用后的结果如下:
可以看到参数里有三个QStrng类型的参数,第一个代表弹出对话框的标题;第二是默认的路径,如果空,则默认为当前路径;第三个是代表了过滤器,如果要有多个过滤器的话,可以用”::”分割,如:
r'Excel Files(*.xls *.xlsx);;Word Files(*.doc)'
得到的fileName就是我们选择的文件和它的路径。
当然QFile的静态函数有很多,如下面所列,可以根据需要选择
Static Methods
- QString getExistingDirectory(QWidget parent = None,QString caption = QString(),QString dir = QString(),Options options = QFileDialog.ShowDirsOnly)
- QString getOpenFileName(QWidget parent = None,QString caption = QString(),QString dir = QString(),QString filter = QString(),Options options = 0)
- QString getOpenFileName(QWidget parent = None,QString caption = QString(),QString dir = QString(),QString filter = QString(),QString selectedFilter = None,Options options = 0)
- tuple getOpenFileNameAndFilter(QWidget parent = None,QString caption = QString(),QString dir = QString(),QString filter = QString(),Options options = 0)
- QStringList getOpenFileNames(QWidget parent = None,QString caption = QString(),QString dir = QString(),QString filter = QString(),Options options = 0)
- QStringList getOpenFileNames(QWidget parent = None,QString caption = QString(),QString dir = QString(),QString filter = QString(),QString selectedFilter = None,Options options = 0)
- tuple getOpenFileNamesAndFilter(QWidget parent = None,QString caption = QString(),QString dir = QString(),QString filter = QString(),Options options = 0)
- QString getSaveFileName(QWidget parent = None,QString caption = QString(),QString dir = QString(),QString filter = QString(),Options options = 0)
- QString getSaveFileName(QWidget parent = None,QString caption = QString(),QString dir = QString(),QString filter = QString(),QString selectedFilter = None,Options options = 0)
- tuple getSaveFileNameAndFilter(QWidget parent = None,QString caption = QString(),QString dir = QString(),QString filter = QString(),Options options = 0)
通过实验我们发现,上面的对话框基本为模态对话框。
另存为对话框也可以通过静态方法来实现:
fileName = QFileDialog.getSaveFileName(self,
r'创建Excel并保存',
r'F:\Python\201608101\test1\Excel',
r'Excel Files(*.xls *.xlsx);;Word Files(*.doc)')
如下图:
此模式下,会自动判断是否文件名已存在等等。
QFile类还为我们提供了自己定制文件对话框的功能。具体请参看帮助文档。