PySide文件对话框类QFileDialog学习

本文介绍了PySide的QFileDialog类的使用,包括功能调用函数、静态函数和详细描述,如设置文件模式、过滤器、查看模式等,帮助用户在Python中创建自定义的文件和目录选择对话框。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了学PySide我决定用它写一个Sqlite3的管理工具,以后把源码和心得再放上来,这两天研究QFileDialog类,边译边总结如下:

 

PySide 的文件对话框类(QFileDialog)的使用说明

简介

功能调用函数

def acceptMode ()

def confirmOverwrite ()

def defaultSuffix ()

def directory ()

  def fileMode ()

def filter ()

def filters ()

def history ()

def iconProvider ()

def isNameFilterDetailsVisible ()

def isReadOnly ()

def itemDelegate ()

 def labelText (label)

def nameFilters ()

 def open (receiver, member)

def options ()

 def proxyModel ()

def resolveSymlinks ()

 def restoreState (state)

 def saveState ()

def selectFile (filename)

def selectFilter (filter)

 def selectNameFilter (filter)

def selectedFiles ()

 def selectedFilter ()

  def selectedNameFilter ()

 def setAcceptMode (mode)

 def setConfirmOverwrite (enabled)

def setDefaultSuffix (suffix)

 def setDirectory (directory)

 def setDirectory (directory)

def setFileMode (mode)

def setFilter (filter)

def setFilter (filters)

def setFilters (filters)

def setHistory (paths)

def setIconProvider (provider)

def setItemDelegate (delegate)

def setLabelText (label, text)

def setNameFilter (filter)

def setNameFilterDetailsVisible (enabled)

def setNameFilters (filters)

def setOption (option[, on=true])

def setOptions (options)

def setProxyModel (model)

 def setReadOnly (enabled)

def setResolveSymlinks (enabled)

 def setSidebarUrls (urls)

def setViewMode (mode)

def sidebarUrls ()

def testOption (option)

def viewMode ()

信号

def currentChanged (path)

def directoryEntered (directory)

 def fileSelected (file)

def filesSelected (files)

 def filterSelected (filter)

静态函数

def getExistingDirectory ([parent=None[, caption=”“[, dir=”“[, options=QFileDialog.ShowDirsOnly]]]])

def getOpenFileName ([parent=None[, caption=”“[, dir=”“[, filter=”“[, selectedFilter=”“[, options=0]]]]]])

def getOpenFileNames ([parent=None[, caption=”“[, dir=”“[, filter=”“[, selectedFilter=”“[, options=0]]]]]])

def getSaveFileName ([parent=None[, caption=”“[, dir=”“[, filter=”“[, selectedFilter=”“[, options=0]]]]]])

详细描述

1.PySide.QtGui.QFileDialog类提供了一个对话框,允许用户选择的文件或目录。

2.PySide.QtGui.QFileDialog类可以让用户通过对话框选择电脑文件系统的一个或多个文件或目录。

3.最简单的方法是使用PySide.QtGui.QFileDialog类的静态函数:

例:fileName=QFileDialog.getOpenFileName(self,
    "打开图像文件", "/home/", "所有图像文件 (*.png *.jpg *.bmp)"  )

上例显示的对话框,窗体的标题为"打开图像文件",默认路径为"/home/"

过滤器匹配为"所有图像文件 (*.png *.jpg *.bmp)" 表示只选择扩展名为png,jpg,bmp的文件,如果想使用多个过滤器,可以用现个分号“;;”格开,例:

"Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"

4.自定义使用PySide.QtGui.QFileDialog类提供的文件对话框指定文件或目录。

  首先定一个实例
dialog = QFileDialog(self,”保存文档)

QFileDialog([parent=None[, caption=""[, directory=""[, filter=""]]]])

实例化类时可选参数有3个分别为标题,当前目录,过滤器。在本例中标题为保存文档

dialog.setFileMode(QFileDialog.AnyFile)

setFileMode (FileMode) 用于设置对话框文件或目录获取模式。

FileMode的值有:

参数值

描述

QFileDialog.AnyFile

确定一个文件名,不管它是否存在

QFileDialog.ExistingFile

确定一个只能是存在的文件名

QFileDialog.Directory

确定一个目录名. 文件和目录都显示

QFileDialog.ExistingFiles

确定零个或多个现有文件的名称。

设置为QFileDialog.AnyFile,这意味着用户可以选择任何文件,或指定一个不存在的文件(自已填写个呵)。常用于另存为文件对话框。

设置为QFileDialog.ExistingFile, 这意味着只能选择文件系统存在的文件。常用于打开文件对话框。

dialog.setNameFilter("图像文件 (*.png *.gif *.jpg)")

selectNameFilter (filter) 设置过滤器,用来筛选指定类型的文件

dialog.setViewMode(QFileDialog.Detail)

 setViewMode (ViewMode设置浏览目录或文件的方式方式有两种: 列表展示细节展示。

ViewMode参数取值为:

参数值

描述

QFileDialog.Detail

显示一个图标,一个名称,目录中的每一项细节。

QFileDialog.List

只显示一个图标和一个名为每个项目中的目录。

dialog.setAcceptMode(QFileDialog.AcceptSave)

setAcceptMode (mode)  设置文件对话框是打开或保存文件对话框。 默认情况下是打开对话框。

setDirectory() 设置当前目录

setDefaultSuffix (suffix)  设置保存对话框默认的扩展名,如doc

例:dialog.setDefaultSuffix("db3")

setLabelText (label, text) 设置对话框对应的标签值。

可对应更改标签有:

QFileDialog.LookIn

QFileDialog.FileName

QFileDialog.FileType

QFileDialog.Accept

QFileDialog.Reject

例:dialog.setLabelText(QFileDialog.LookIn,"路径:")  

    dialog.setLabelText(QFileDialog.FileName,"文件名:")  

    dialog.setLabelText(QFileDialog.FileType,"文件类型:") 

    dialog.setLabelText(QFileDialog.Accept,"新建")

    dialog.setLabelText(QFileDialog.Reject,"取消")

原:

改后:

setOptions (options) 配置选项。

setOption (option[, on=true])

option取值(吃饭了,这个就不详说了):

参数

描述

QFileDialog.ShowDirsOnly

Only show directories in the file dialog. By default both files and directories are shown. (Valid only in the Directory file mode.)

QFileDialog.DontResolveSymlinks

Don’t resolve symlinks in the file dialog. By default symlinks are resolved.

QFileDialog.DontConfirmOverwrite

Don’t ask for confirmation if an existing file is selected. By default confirmation is requested.

QFileDialog.DontUseNativeDialog

Don’t use the native file dialog. By default, the native file dialog is used unless you use a subclass of PySide.QtGui.QFileDialog that contains the Q_OBJECT() macro.

QFileDialog.ReadOnly

Indicates that the model is readonly.

QFileDialog.HideNameFilterDetails

Indicates if the file name filter details are hidden or not.

QFileDialog.DontUseSheet

In previous versions of Qt, the static functions would create a sheet by default if the static function was given a parent. This is no longer supported and does nothing in Qt 4.5, The static functions will always be an application modal dialog. If you want to use sheets, use QFileDialog.open() instead.

if dialog.exec_():
    fileNames = dialog.selectedFiles()

以上两行代码,动态建立了文件对话框。selectedFiles()属性返回带有路径的文件名,fileNames类型为pythonList.

其它功能详见:http://srinikom.github.com/pyside-docs/modules.html

 

转载于:https://my.oschina.net/zzpzf/blog/106512

在使用 PySide6 时,如果你遇到了报错提示 `QFileDialog` 未定义,通常是因为你没有正确导入 `QFileDialog` 。`QFileDialog` 是 PySide6 中用于提供文件对话框,属于 `PySide6.QtWidgets` 模块。 下面是一个使用 `QFileDialog` 的完整示例代码,演示如何打开文件对话框并选择文件: ```python import sys from PySide6.QtWidgets import QApplication, QWidget, QPushButton, QFileDialog class FileDialogExample(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('QFileDialog 示例') # 创建按钮 btn = QPushButton('打开文件', self) btn.clicked.connect(self.showDialog) btn.move(30, 30) self.resize(300, 200) self.show() def showDialog(self): # 打开文件对话框 fname, _ = QFileDialog.getOpenFileName(self, '打开文件', '', '所有文件 (*);;文本文件 (*.txt)') if fname: print(f'选择的文件是:{fname}') if __name__ == '__main__': app = QApplication(sys.argv) ex = FileDialogExample() sys.exit(app.exec()) ``` ### 代码解释: 1. **导入模块**: - `QApplication`:用于管理 GUI 应用程序的控制流和主设置。 - `QWidget`:基础窗口。 - `QPushButton`:按钮控件。 - `QFileDialog`:用于弹出文件选择对话框。 2. **`FileDialogExample` **: - 继承自 `QWidget`,用于创建主窗口。 - `initUI` 方法中创建了一个按钮,并将其点击事件连接到 `showDialog` 方法。 3. **`showDialog` 方法**: - 调用 `QFileDialog.getOpenFileName()` 方法弹出文件对话框。 - `getOpenFileName` 返回一个元组,第一个元素是文件路径(`fname`),第二个是文件过滤器(`_`)。 - 如果用户选择了文件,则打印文件路径。 ### 常见错误原因: - **未导入 `QFileDialog`**:确保你在代码中正确导入了 `QFileDialog`。 - **拼写错误**:检查是否拼写错误,例如 `QfileDialog` 或 `QFileDialogs`。 - **未正确安装 PySide6**:确保你已经通过 `pip install PySide6` 正确安装了 PySide6。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值