8.4 QFileDialog文件选择对话框

一、QFileDialog文件选择对话框

1.基本概念

  • QFileDialog文件选择对话框是一个提供文件或者文件夹选择的对话框控件,一般使用非模态展示。
  • 这里一定要注意构造函数的使用,这是重中之重,通过构造函数我们就可以完成绝大多数常用功能的设置。

2.代码

点击查看代码
from PyQt5.Qt import *
import sys


class Window(QWidget) :
    def __init__(self) :
        super().__init__()
        self.setWindowTitle("QFileDialog文件选择对话框 - PyQt5中文网")
        self.resize(600, 500)
        self.func_list()

    def func_list(self) :
        self.func()

    def func(self) :


        ## 案例:按钮促发打开文件的方法--可以用于选择视频、图片时使用
        btn = QPushButton(self)
        btn.move(200, 200)
        btn.setText('打开对话框')
        btn.resize(100, 30)
        btn.clicked.connect(lambda : fd.show())

        # 1.构造方法
        fd = QFileDialog(self, '文件选择') #第一种
        # fd = QFileDialog(self, '文件选择', './', 'all(*.*);;images(*.png *.jpg);;python(*.py)') #第二种 './'表示当前路径 'all(*.*);;images(*.png *.jpg);;python(*.py)'表示限制条件
        '''  
        2.静态方法
          # 获取文件:只能获取文件路径
          # QFileDialog.getOpenFileName() #获取名称
          # QFileDialog.getOpenFileNames()
          # QFileDialog.getOpenFileUrl() #获取地址
          # QFileDialog.getOpenFileUrls()
          # QFileDialog.getSaveFileName()
          # QFileDialog.getSaveFileUrl()
         '''
        # #参数:父控件, 控件标题, 路径, 文件类型, 默认文件类型
        # res = QFileDialog.getOpenFileName(self, '文件选择', './', 'all(*.*);;images(*.png *.jpg);;python(*.py)', 'all(*.*)')
        # res = QFileDialog.getOpenFileNames(self, '文件选择', './', 'all(*.*);;images(*.png *.jpg);;python(*.py)', 'all(*.*)')
        # print(res)

        '''
        # 3.获取文件夹
        # QFileDialog.getExistingDirectory()  #
        # QFileDialog.getExistingDirectoryUrl()  #
        '''
        # # res = QFileDialog.getOpenFileNames(self, '文件选择', './')
        # res = QFileDialog.getExistingDirectoryUrl(self, '文件选择', QUrl('./'))
        # print(res)

        '''
        # 4.接收模式和保存模式
        # QFileDialog.AcceptSave #保存模式
        # QFileDialog.AcceptOpen #打开模式
        '''
        # fd.setAcceptMode(QFileDialog.AcceptSave)  # 必须要有文件后缀名
        # #fd.setAcceptMode(QFileDialog.AcceptOpen)
        # fd.setDefaultSuffix('jpg')  # 设置默认文件后缀名


        # 5.选择文件模式
        # fd.setFileMode(QFileDialog.Directory)  # 选择目录
        # fd.setFileMode(QFileDialog.AnyFile)  # 选择文件
        # fd.setFileMode(QFileDialog.ExistingFile)  # 选择单个现有文件
        # fd.setFileMode(QFileDialog.ExistingFiles)  # 选择多个现有文件

        ## 6.设置名称过滤器
        #fd.setNameFilter('image(*.jpg *.png)')
        #fd.setNameFilters(['all(*.*)', 'images(*.png *.jpg)', 'python(*.py)'])

        ## 7.显示信息的详细程度,系统不兼容
        #fd.setViewMode(QFileDialog.List)
        #fd.setViewMode(QFileDialog.Detail)

        ## 8.设置指定角色的标签名称
        # fd.setLabelText(QFileDialog.FileName, '选择文件')
        # fd.setLabelText(QFileDialog.Accept, '确定')
        # fd.setLabelText(QFileDialog.Reject, '取消')
        # fd.setLabelText(QFileDialog.FileType, '文件后缀')
        # fd.setLabelText(QFileDialog.LookIn, '目录')
        '''
        # 9.可用信号
        # fd.currentChanged()  # 当前路径发生改变
        # fd.currentUrlChanged(QUrl)  # 当前路径URL改变
        # fd.directoryEntered()  # 进入选中文件夹
        # fd.directoryUrlEntered(QUrl)  # 进入选中文件夹URL时
        # fd.filterSelected()  # 选择名称后缀过滤器时
        # fd.fileSelected()  # 单个文件被选中
        # fd.fileSelected()  # 多个文件被选中
        # fd.urlSelected()  # 单个url被选中
        # fd.urlsSelected()  # 多个url被选中
        '''
        fd.currentChanged.connect(lambda str: print('当前路径发生改变', str))
        fd.filterSelected.connect(lambda filter: print('当前名称过滤器发生改变', filter))



        pass


if __name__ == '__main__' :
    app = QApplication(sys.argv)
    window = Window()

    window.show()
    sys.exit(app.exec_())
posted @   Trouvaille_fighting  阅读(423)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示

目录导航