zoukankan      html  css  js  c++  java
  • PyQt5 控件学习(一个一个学习之QFileDialog)

    QFileDialog的继承图:

    QFileDialog的描述:

    QFileDialog的继承:

    它继承自QDialog  

    QFileDialog的功能作用:

    QFileDialog的功能作用之最简单的获取方式(静态方法):

    第一个方法的使用(获取单个文件):

    from PyQt5.Qt import * #刚开始学习可以这样一下导入
    import sys
    
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("QFileDialog的学习")
            self.resize(400,400)
            self.set_ui()
    
    
        def set_ui(self):                                                # 这里是过滤器
            ret =  QFileDialog.getOpenFileName(self,"选择一个py文件","./","ALL(*.*);;Images(*.png *.jpg);;Python文件(*.py)","Python文件(*.py)")
            print(ret)
    if __name__ == '__main__':
        app =QApplication(sys.argv)
    
        window = Window()
        window.show()
    
        sys.exit(app.exec_())
    getOpenFileName

    第二个,获取多个文件:

    from PyQt5.Qt import * #刚开始学习可以这样一下导入
    import sys
    
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("QFileDialog的学习")
            self.resize(400,400)
            self.set_ui()
    
    
        def set_ui(self):                                                # 这里是过滤器
            ret =  QFileDialog.getOpenFileNames(self,"选择一个py文件","./","ALL(*.*);;Images(*.png *.jpg);;Python文件(*.py)","Python文件(*.py)")
            print(ret)
    if __name__ == '__main__':
        app =QApplication(sys.argv)
    
        window = Window()
        window.show()
    
        sys.exit(app.exec_())
    选多个文件

    第三个:获取文件的url 地址:

    from PyQt5.Qt import * #刚开始学习可以这样一下导入
    import sys
    
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("QFileDialog的学习")
            self.resize(400,400)
            self.set_ui()
    
    
        def set_ui(self):                                                # 这里是过滤器
            ret =  QFileDialog.getOpenFileUrl(self,"选择一个py文件","./","ALL(*.*);;Images(*.png *.jpg);;Python文件(*.py)","Python文件(*.py)")
            print(ret)
    if __name__ == '__main__':
        app =QApplication(sys.argv)
    
        window = Window()
        window.show()
    
        sys.exit(app.exec_())
    View Code

    此时得到的是个url 对象 。

    第五个,保存时设置文件名称:

    from PyQt5.Qt import * #刚开始学习可以这样一下导入
    import sys
    
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("QFileDialog的学习")
            self.resize(400,400)
            self.set_ui()
    
    
        def set_ui(self):                                                # 这里是过滤器
            ret =  QFileDialog.getSaveFileName(self,"选择一个py文件","./","ALL(*.*);;Images(*.png *.jpg);;Python文件(*.py)","Python文件(*.py)")
            print(ret)
    if __name__ == '__main__':
        app =QApplication(sys.argv)
    
        window = Window()
        window.show()
    
        sys.exit(app.exec_())
    View Code

    下面是两个获取文件夹的方法:

    from PyQt5.Qt import * #刚开始学习可以这样一下导入
    import sys
    
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("QFileDialog的学习")
            self.resize(400,400)
            self.set_ui()
    
    
        def set_ui(self):
            ret =  QFileDialog.getExistingDirectory(self,"选择一个py文件","./")
            print(ret)
    if __name__ == '__main__':
        app =QApplication(sys.argv)
    
        window = Window()
        window.show()
    
        sys.exit(app.exec_())
    getExistingDirectory
    from PyQt5.Qt import * #刚开始学习可以这样一下导入
    import sys
    
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("QFileDialog的学习")
            self.resize(400,400)
            self.set_ui()
    
    
        def set_ui(self):
            ret =  QFileDialog.getExistingDirectoryUrl(self,"选择一个py文件",QUrl("./"))
            print(ret)
    if __name__ == '__main__':
        app =QApplication(sys.argv)
    
        window = Window()
        window.show()
    
        sys.exit(app.exec_())
    getExistingDirectoryUrl

    补充:过滤器的格式:

    分隔是以;;  (两个分号)

    其实,一般情况下,我们都是使用这上面的静态方法,简单好用。 

    QFileDialog的功能作用之构造函数:

    from PyQt5.Qt import * #刚开始学习可以这样一下导入
    import sys
    
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("QFileDialog的学习")
            self.resize(400,400)
            self.set_ui()
    
    
        def set_ui(self):
    
            fileDialog = QFileDialog(self,"选择一个文件","./","ALL(*.*);;Python文件(*.py);;Images(*.png *.jpg)")
    
            fileDialog.open()  #此时如何拿到用户选择的文件呢,这里要借助信号了。
    
            fileDialog.fileSelected.connect(lambda file:print(file))
    
    
    
            btn = QPushButton(self)
            btn.setText("按钮")
            btn.move(0,300)
            btn.clicked.connect(self.btn_clicked_slot)
    
    
        def btn_clicked_slot(self):
            pass
    
        def test(self):
            pass
            
            
            
            
    if __name__ == '__main__':
        app =QApplication(sys.argv)
    
        window = Window()
        window.show()
    
        sys.exit(app.exec_())
    利用fileSelected接收用户的选择

    QFileDialog的功能作用之接收模式:

    这里来设置保存还是打开,

    from PyQt5.Qt import * #刚开始学习可以这样一下导入
    import sys
    
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("QFileDialog的学习")
            self.resize(400,400)
            self.set_ui()
    
    
        def set_ui(self):
    
            fileDialog = QFileDialog(self,"选择一个文件","./","ALL(*.*);;Python文件(*.py);;Images(*.png *.jpg)")
    
            fileDialog.setAcceptMode(QFileDialog.AcceptSave)  #此时就是保存的对话框了
            
    
            fileDialog.open()  #此时如何拿到用户选择的文件呢,这里要借助信号了。
            fileDialog.fileSelected.connect(lambda file:print(file))
    
    
    
            btn = QPushButton(self)
            btn.setText("按钮")
            btn.move(0,300)
            btn.clicked.connect(self.btn_clicked_slot)
    
    
        def btn_clicked_slot(self):
            pass
    
        def test(self):
            pass
            
            
            
            
    if __name__ == '__main__':
        app =QApplication(sys.argv)
    
        window = Window()
        window.show()
    
        sys.exit(app.exec_())
    View Code

    QFileDialog的功能作用之默认后缀:

    from PyQt5.Qt import * #刚开始学习可以这样一下导入
    import sys
    
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("QFileDialog的学习")
            self.resize(400,400)
            self.set_ui()
    
    
        def set_ui(self):
    
            fileDialog = QFileDialog(self,"选择一个文件","./","ALL(*.*);;Python文件(*.py);;Images(*.png *.jpg)")
    
            fileDialog.setAcceptMode(QFileDialog.AcceptSave)
            fileDialog.setDefaultSuffix("txt")  #设置默认后缀名
    
            fileDialog.open()  #此时如何拿到用户选择的文件呢,这里要借助信号了。
            fileDialog.fileSelected.connect(lambda file:print(file))
    
    
    
            btn = QPushButton(self)
            btn.setText("按钮")
            btn.move(0,300)
            btn.clicked.connect(self.btn_clicked_slot)
    
    
        def btn_clicked_slot(self):
            pass
    
        def test(self):
            pass
            
            
            
            
    if __name__ == '__main__':
        app =QApplication(sys.argv)
    
        window = Window()
        window.show()
    
        sys.exit(app.exec_())
    View Code

    QFileDialog的功能作用之设置文件模式:

    如何区分文件和文件夹呢?

    from PyQt5.Qt import * #刚开始学习可以这样一下导入
    import sys
    
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("QFileDialog的学习")
            self.resize(400,400)
            self.set_ui()
    
    
        def set_ui(self):
    
            fileDialog = QFileDialog(self,"选择一个文件","./","ALL(*.*);;Python文件(*.py);;Images(*.png *.jpg)")
    
            fileDialog.setFileMode(QFileDialog.Directory)
    
            fileDialog.open()
    
    
    
            btn = QPushButton(self)
            btn.setText("按钮")
            btn.move(0,300)
            btn.clicked.connect(self.btn_clicked_slot)
    
    
        def btn_clicked_slot(self):
            pass
    
        def test(self):
            pass
            
            
            
            
    if __name__ == '__main__':
        app =QApplication(sys.argv)
    
        window = Window()
        window.show()
    
        sys.exit(app.exec_())
    View Code

    QFileDialog的功能作用之设置名称过滤器:

    from PyQt5.Qt import * #刚开始学习可以这样一下导入
    import sys
    
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("QFileDialog的学习")
            self.resize(400,400)
            self.set_ui()
    
    
        def set_ui(self):
    
            fileDialog = QFileDialog(self,"选择一个文件","./","ALL(*.*);;Python文件(*.py);;Images(*.png *.jpg)")
    
            # fileDialog.setFileMode(QFileDialog.Directory)
    
            # fileDialog.setNameFilter("IMG(*.png *.jpg)")  #会把之前的给覆盖了
    
            fileDialog.setNameFilters(["ALL(*.*)","Python文件(*.py)","Images(*.png *.jpg)"])
            
            fileDialog.open()
    
    
    
            btn = QPushButton(self)
            btn.setText("按钮")
            btn.move(0,300)
            btn.clicked.connect(self.btn_clicked_slot)
    
    
        def btn_clicked_slot(self):
            pass
    
        def test(self):
            pass
            
            
            
            
    if __name__ == '__main__':
        app =QApplication(sys.argv)
    
        window = Window()
        window.show()
    
        sys.exit(app.exec_())
    过滤器设置

    QFileDialog的功能作用之设置信息的详细程度:

    from PyQt5.Qt import * #刚开始学习可以这样一下导入
    import sys
    
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("QFileDialog的学习")
            self.resize(400,400)
            self.set_ui()
    
    
        def set_ui(self):
    
            fileDialog = QFileDialog(self,"选择一个文件","./","ALL(*.*);;Python文件(*.py);;Images(*.png *.jpg)")
    
    
            fileDialog.setNameFilters(["ALL(*.*)","Python文件(*.py)","Images(*.png *.jpg)"])
    
            # fileDialog.setViewMode(QFileDialog.List)
            fileDialog.setViewMode(QFileDialog.Detail)  #和上面的差不多  
    
    
            fileDialog.open()
    
    
    
            btn = QPushButton(self)
            btn.setText("按钮")
            btn.move(0,300)
            btn.clicked.connect(self.btn_clicked_slot)
    
    
        def btn_clicked_slot(self):
            pass
    
        def test(self):
            pass
            
            
            
            
    if __name__ == '__main__':
        app =QApplication(sys.argv)
    
        window = Window()
        window.show()
    
        sys.exit(app.exec_())
    View Code

    QFileDialog的功能作用之设置指定角色的标签名称:

    from PyQt5.Qt import * #刚开始学习可以这样一下导入
    import sys
    
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("QFileDialog的学习")
            self.resize(400,400)
            self.set_ui()
    
    
        def set_ui(self):
    
            fileDialog = QFileDialog(self,"选择一个文件","./","ALL(*.*);;Python文件(*.py);;Images(*.png *.jpg)")
            fileDialog.setNameFilters(["ALL(*.*)","Python文件(*.py)","Images(*.png *.jpg)"])
    
            # fileDialog.setLabelText(QFileDialog.FileName,"我的文件")
            fileDialog.setLabelText(QFileDialog.Accept,"Sure")
            fileDialog.setLabelText(QFileDialog.Reject,"Cancel")
    
    
    
    
    
            fileDialog.open()
    
    
    
            btn = QPushButton(self)
            btn.setText("按钮")
            btn.move(0,300)
            btn.clicked.connect(self.btn_clicked_slot)
    
    
        def btn_clicked_slot(self):
            pass
    
        def test(self):
            pass
            
            
            
            
    if __name__ == '__main__':
        app =QApplication(sys.argv)
    
        window = Window()
        window.show()
    
        sys.exit(app.exec_())
    View Code

    QFileDialog的功能作用之打开对话框:

    和之前的一样。

    QFileDialog的信号:

    from PyQt5.Qt import * #刚开始学习可以这样一下导入
    import sys
    
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("QFileDialog的学习")
            self.resize(400,400)
            self.set_ui()
    
    
        def set_ui(self):
    
            fileDialog = QFileDialog(self,"选择一个文件","./","ALL(*.*);;Python文件(*.py);;Images(*.png *.jpg)")
            fileDialog.setNameFilters(["ALL(*.*)","Python文件(*.py)","Images(*.png *.jpg)"])
    
            fileDialog.currentChanged.connect(lambda path:print("当前路径改变",path))
            fileDialog.currentUrlChanged.connect(lambda url:print("当前Qurl改变",url))
    
            fileDialog.open()
    
    
    
            btn = QPushButton(self)
            btn.setText("按钮")
            btn.move(0,300)
            btn.clicked.connect(self.btn_clicked_slot)
    
    
        def btn_clicked_slot(self):
            pass
    
        def test(self):
            pass
            
            
            
            
    if __name__ == '__main__':
        app =QApplication(sys.argv)
    
        window = Window()
        window.show()
    
        sys.exit(app.exec_())
    currentChanged 和 currentUrlChanged
    from PyQt5.Qt import * #刚开始学习可以这样一下导入
    import sys
    
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("QFileDialog的学习")
            self.resize(400,400)
            self.set_ui()
    
    
        def set_ui(self):
    
            fileDialog = QFileDialog(self,"选择一个文件","./","ALL(*.*);;Python文件(*.py);;Images(*.png *.jpg)")
            fileDialog.setNameFilters(["ALL(*.*)","Python文件(*.py)","Images(*.png *.jpg)"])
    
            fileDialog.directoryEntered.connect(lambda path:print("进入目录",path))
            fileDialog.directoryUrlEntered.connect(lambda url:print("进入目录(QUrl)",url))
    
            fileDialog.open()
    
    
    
            btn = QPushButton(self)
            btn.setText("按钮")
            btn.move(0,300)
            btn.clicked.connect(self.btn_clicked_slot)
    
    
        def btn_clicked_slot(self):
            pass
    
        def test(self):
            pass
            
            
            
            
    if __name__ == '__main__':
        app =QApplication(sys.argv)
    
        window = Window()
        window.show()
    
        sys.exit(app.exec_())
    directoryEntered 和 directoryUrlEntered
    from PyQt5.Qt import * #刚开始学习可以这样一下导入
    import sys
    
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("QFileDialog的学习")
            self.resize(400,400)
            self.set_ui()
    
    
        def set_ui(self):
    
            fileDialog = QFileDialog(self,"选择一个文件","./","ALL(*.*);;Python文件(*.py);;Images(*.png *.jpg)")
            fileDialog.setNameFilters(["ALL(*.*)","Python文件(*.py)","Images(*.png *.jpg)"])
    
            fileDialog.filterSelected.connect(lambda filter:print("过滤器被选中",filter))
    
            fileDialog.open()
    
    
    
            btn = QPushButton(self)
            btn.setText("按钮")
            btn.move(0,300)
            btn.clicked.connect(self.btn_clicked_slot)
    
    
        def btn_clicked_slot(self):
            pass
    
        def test(self):
            pass
            
            
            
            
    if __name__ == '__main__':
        app =QApplication(sys.argv)
    
        window = Window()
        window.show()
    
        sys.exit(app.exec_())
    filterSelected 信号

    继续:

    from PyQt5.Qt import * #刚开始学习可以这样一下导入
    import sys
    
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("QFileDialog的学习")
            self.resize(400,400)
            self.set_ui()
    
    
        def set_ui(self):
    
            fileDialog = QFileDialog(self,"选择一个文件","./","ALL(*.*);;Python文件(*.py);;Images(*.png *.jpg)")
            fileDialog.setNameFilters(["ALL(*.*)","Python文件(*.py)","Images(*.png *.jpg)"])
    
            #这里用到前面的文件模式:
            fileDialog.setFileMode(QFileDialog.ExistingFiles)
    
            fileDialog.fileSelected.connect(lambda file:print("单个文件被选中- 字符串",file))
            fileDialog.filesSelected.connect(lambda file:print("多个文件被选中- 列表[字符串]",file))
            fileDialog.urlSelected.connect(lambda file:print("单个文件被选中- url ",file))
            fileDialog.urlsSelected.connect(lambda file:print("多个文件被选中- 列表[url]",file))
    
            fileDialog.open()
    
    
    
            btn = QPushButton(self)
            btn.setText("按钮")
            btn.move(0,300)
            btn.clicked.connect(self.btn_clicked_slot)
    
    
        def btn_clicked_slot(self):
            pass
    
        def test(self):
            pass
            
            
            
            
    if __name__ == '__main__':
        app =QApplication(sys.argv)
    
        window = Window()
        window.show()
    
        sys.exit(app.exec_())
    fileSelected filesSelected urlsSelected urlSelected

    总结:

    以上就是文件选择对话框,下面是输入对话框:QInputDialog:  https://www.cnblogs.com/zach0812/p/11392844.html

  • 相关阅读:
    统计nginx日志里访问次数最多的前十个IP
    while 格式化输出 运算符 字符编码
    Python 软件安装
    Python 基础
    Typora 基础的使用方法
    Django ORM (四) annotate,F,Q 查询
    Django 惰性机制
    Django ORM (三) 查询,删除,更新操作
    Django ORM (二) 增加操作
    Django ORM (一) 创建数据库和模型常用的字段类型参数及Field 重要参数介绍
  • 原文地址:https://www.cnblogs.com/zach0812/p/11392839.html
Copyright © 2011-2022 走看看