当前位置: 首页 > 文档资料 > PyQt 中文教程 >

QFileDialog

优质
小牛编辑
137浏览
2023-12-01

此小部件是文件选择器对话框。 它使用户能够浏览文件系统并选择要打开或保存的文件。 通过静态函数或通过调用对话框对象上的exec_()函数来调用该对话框。

QFileDialog类的静态函数(getOpenFileName()和getSaveFileName())调用当前操作系统的本机文件对话框。

文件筛选器还可以应用于仅显示指定扩展名的文件。 也可以设置起始目录和默认文件名。

下表列出了QFileDialog类的重要方法和枚举 -

Sr.No.方法和描述
1

getOpenFileName()

返回用户为打开文件而选择的文件的名称

2

getSaveFileName()

使用用户选择的文件名保存文件

3

setacceptMode()

确定文件框是用作打开还是保存对话框

QFileDialog.AcceptOpen

QFileDialog.AcceptSave

4

setFileMode()

可选文件的类型。 枚举常数是 -

QFileDialog.AnyFile

QFileDialog.ExistingFile

QFileDialog.Directory

QFileDialog.ExistingFiles

5

setFilter()

仅显示具有所述扩展名的文件

例子 (Example)

以下示例演示了调用文件对话框的两种方法。

第一个按钮通过静态方法调用文件对话框。

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()

上面的代码产生以下输出 -

QFileDialog Widget Output1QFileDialog Widget Output2