66.QFileDialog

继承 QDialog

目录

1  静态方法

1.1  获取文件

1.1.1  获取单个文件 getOpenFileName()

1.1.2  获取多个文件 getOpenFileNames()

1.1.3  获取文件的url getOpenFileUrl()

1.1.4  获取多个文件的url getOpenFileUrls()

1.1.5  获得保存文件路径 getSaveFileUrls()

1.1.6  获取文件保存url getSaveFileUrl()

1.2  获取文件夹

1.2.1  获取已经存在的文件夹路径 getExistingDirectory()

1.2.2  获取已存在文件夹的url getExistingDirectoryUrl()

2  基本操作

2.1  构造函数

2.2  接收模式

2.2.1  获取接收模式 acceptMode()

2.2.2  设置接收模式 setFileMode()

2.3  信号

2.4  默认后缀

2.4.1  设置 setDefaultSuffix()

2.4.2  获取 defaultSuffix()

2.5  设置文件模式

2.5.1  获取 fileMode()

2.5.2  设置 setFileMode()

2.5.3  QFileDialog.Directory 目录名称

2.5.4  QFileDialog.ExistingFiles 零个或多个现有文件的名称

2.6  设置名称过滤器

2.6.1  设置一个名称过滤器 setNameFilter()

2.6.2  设置多个名称过滤器 setNameFilters()

2.7  显示信息的详细程度

2.7.1  获取 viewMode()

2.7.2  设置 setViewMode()

3  设置指定角色的标签名称 setLabelText(QFileDialog.DialogLabel,str)


1  静态方法

1.1  获取文件

1.1.1  获取单个文件 getOpenFileName()

可以直接创建

默认是项目路径

也可以传入参数

  • 父控件
  • 标题
  • 默认路径
  • 文件筛选 比如 .py .txt等
  • 默认文件筛选 如果不设置默认为第一个
  • 选项

会返回一个元组

在QFileDialog中有独有的选项,我们先不在这写,后面会介绍

文件筛选字符串:

  • *,* 所有文件
  • *.txt 固定尾缀的文件,例为尾缀为txt的文件
  • hello.* 固定文件名的文件,例为文件名为hello的文件

文件筛选可以有多个,用两个分号进行分割

  • 比如 *.*;;*.txt

前面可以加一个名称

  • 比如 All file(*.*);;文本文档(*.txt)

一个括号内,也可以有多种文件

  • 比如 All file(*.*);;文本文档(*.txt);;图片(*.jpg *.png)

我们验证一下最复杂的文件筛选字符串 All file(*.*);;文本文档(*.txt);;图片(*.jpg,*.png)

如果选图片的话经测试可以筛选出jpg和png

我们现在回到我们刚刚写的代码

拉到下面可以看到txt的文件

如果点击右上角的叉或者取消

现在我们点击 eula.1028.txt 这个文件,之后点击确定

第一个是选择的文件,第二个是当前选择的过滤器中的内容

1.1.2  获取多个文件 getOpenFileNames()

可以直接创建

默认是项目路径

我们这次点两个文件

之后点击打开

也可以传入参数

  • 父控件
  • 标题
  • 默认路径
  • 文件筛选 比如 .py .txt等
  • 选项

我们这次选一个文件

之后点击打开

选择一个文件的结果与QFileDialog.getOpenFileName相同

1.1.3  获取文件的url getOpenFileUrl()

可以直接创建

运行后我们选择其中一个文件

点击打开

也可以传入参数

  • 父控件
  • 标题
  • 默认路径
  • 文件筛选 比如 .py .txt等
  • 选项

选择一个文件点击打开

1.1.4  获取多个文件的url getOpenFileUrls()

可以带参数也可以不带参数,我们直接带参数选两个文件,之后点打开

1.1.5  获得保存文件路径 getSaveFileUrls()

可以带参数也可以不带参数,我们直接带参数选一个文件,然后点击保存

会提示文件已存在,是否替换

点击 是 后

此时对被覆盖的文档没有影响

1.1.6  获取文件保存url getSaveFileUrl()

可以带参数也可以不带参数,我们直接带参数选一个文件,然后点击保存

会提示文件已存在,是否替换

点击 是 后

此时对被覆盖的文档没有影响

当然我们也可以不选文件

进入后,我们进入想保存的目录后,直接输入文件名

之后点击保存

此时指定目录下并没有创建123.txt这个文件

1.2  获取文件夹

1.2.1  获取已经存在的文件夹路径 getExistingDirectory()

可以带参数也可以不带参数,我们直接带参数选一个文件夹,然后点击打开

在这个方法里是没有过滤器这个参数的

运行后,我们选择一个文件夹,然后点击选择文件夹

1.2.2  获取已存在文件夹的url getExistingDirectoryUrl()

可以带参数也可以不带参数,我们直接带参数选一个文件夹,然后点击打开

在这个方法使用了QUrl代替路径

运行后,我们选择一个文件夹,然后点击选择文件夹

2  基本操作

2.1  构造函数

可以带参数也可以不带参数,我们这里直接带参数来搞

2.2  接收模式

下面的代码涉及到一个变量叫QFileDialog.AcceptMode,其中有两个值可选

  • 0 - QFileDialog.AcceptOpen 打开
  • 1 - QFileDialog.AcceptSave 保存

2.2.1  获取接收模式 acceptMode()

默认情况下是打开模式

2.2.2  设置接收模式 setFileMode()

现在我们给他搞成保存模式

  • 注:一定要在open()等弹出方法之前设置

2.3  信号

我们给信号都连接一个槽函数

由于设置了初始值,运行后就激活了三个信号

我们将过滤器改为文本文档

我们现在选中一个文件夹

之后进入这个文件夹

这时我们选中一个文件

之后点击打开

到此我们上面的九个信号都触发了一遍

默认情况下是不能选择多个文件的,我们在下面的设置文件模式中进行介绍

2.4  默认后缀

我们在保存的时候,如果只输入文件名而不输入后缀的话会报错

此时我们设置一个默认的后缀可以解决这个问题

2.4.1  设置 setDefaultSuffix()

此时我们直接输入123,之后点击保存就不会报错了

2.4.2  获取 defaultSuffix()

2.5  设置文件模式

参数为 QFileDialog.FileMode ,可选值如下

  • 0 - QFileDialog.AnyFile 任何文件名称
  • 1 - QFileDialog.ExistingFile 单个现有文件名称
  • 2 - QFileDialog.Directory 目录名称
  • 3 - QFileDialog.ExistingFiles 零个或多个现有文件的名称

2.5.1  获取 fileMode()

默认为任何文件名称

在这个框子里,只要输入值,我就能打开

2.5.2  设置 setFileMode()

2.5.2.1  QFileDialog.ExistingFile 单个现有文件名称

我们输入一个1,然后点击打开

会出现一个提示

我们只能选择一个现有的文件,然后点击打开

没有报错

2.5.3  QFileDialog.Directory 目录名称

运行之后是这样的

随便选择一个文件夹,之后选择文件夹,没有报错

  • 0 - QFileDialog.AnyFile 任何文件名称
  • 1 - QFileDialog.ExistingFile 单个现有文件名称
  • 2 - QFileDialog.Directory 目录名称
  • 3 - QFileDialog.ExistingFiles 零个或多个现有文件的名称

2.5.4  QFileDialog.ExistingFiles 零个或多个现有文件的名称

运行后我们就可以选择多个文件了

点击打开后,没有提示

2.6  设置名称过滤器

2.6.1  设置一个名称过滤器 setNameFilter()

我们之前创建的

现在我们改成别的

运行之后

2.6.2  设置多个名称过滤器 setNameFilters()

2.7  显示信息的详细程度

参数为 QFileDialog.ViewMode 可选的值为

  • 0 - QFileDialog.Detail 显示细节
  • 1 - QFileDialog.List 显示列表

2.7.1  获取 viewMode()

默认值为0

2.7.2  设置 setViewMode()

由于默认值为0,我们现在设置为1

在windows下没有变化,不知道在别的系统里有没有变化

3  设置指定角色的标签名称 setLabelText(QFileDialog.DialogLabel,str)

第一个参数为 QFileDialog.DialogLabel,它的值可以为

  • QFileDialog.FileName 文件名称标签
  • QFileDialog.Accept 接收标签
  • QFileDialog.Reject 拒绝标签
  • QFileDialog.FileType 文件类型标签
  • QFileDialog.LookIn 查找标签

运行之后我只能找到 文件目录,接受和拒绝的位置,另外两个位置找不到

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
PySide2.QtWidgets.QFileDialog.getExistingDirectory是一个静态方法,用于打开一个对话框,以选择一个现有目录。该方法接受以下参数: - parent: 父窗口小部件,用于指定对话框的父窗口。默认为None,表示没有父窗口。 - caption: 对话框标题,用于指定对话框上方的文本。默认为空字符串。 - dir: 默认目录,用于指定对话框中打开的目录。默认为空字符串。 - options: 用于指定对话框的选项。默认为PySide2.QtWidgets.QFileDialog.Option.ShowDirsOnly,表示只显示目录。 该方法返回一个字符串,表示用户选择的目录的路径。如果用户取消了选择,则返回空字符串。 以下是一个使用PySide2.QtWidgets.QFileDialog.getExistingDirectory方法的示例: ```python import sys from PySide2.QtWidgets import QApplication, QMainWindow, QFileDialog, QPushButton class MainWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('Directory Dialog Example') button = QPushButton('Select Directory', self) button.move(20, 20) button.clicked.connect(self.selectDirectory) self.setGeometry(300, 300, 300, 100) def selectDirectory(self): directory = QFileDialog.getExistingDirectory(self, 'Select Directory', '/home') print(directory) if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) ``` 在这个例子中,我们创建了一个QPushButton,并将其与MainWindow.selectDirectory方法相关联。当用户单击按钮时,该方法将打开一个对话框,用于选择一个现有目录。在用户选择目录后,将打印目录的路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Suyuoa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值