pyqt5文件对话框

对话框选择文件

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'QFileDialog.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.

# 对话框选择文件
from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(697, 510)
        # QtWidgets.QWidget:是 QWidget 类的全称,QWidget 是 PyQt 中所有控件的基类,
        # 用于创建用户界面中的窗口和部件。

        # 这行代码的作用是创建一个 QWidget 对象,并将其父窗口设置为 MainWindow。
        # 这个 QWidget 对象通常用作主窗口的中心部件,你可以在这个中心部件上添加其他控件,如按钮、标签、文本框等。
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")

        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(200, 40, 75, 23))
        self.pushButton.setObjectName("pushButton")

        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(400, 40, 75, 23))
        self.pushButton_2.setObjectName("pushButton_2")

        self.listWidget = QtWidgets.QListWidget(self.centralwidget)
        self.listWidget.setGeometry(QtCore.QRect(200, 100, 311, 281))
        self.listWidget.setObjectName("listWidget")

        # MainWindow.setCentralWidget(self.centralwidget) 这行代码的作用是将 self.centralwidget
        # 设置为 MainWindow 的中心部件。在 PyQt 的 QMainWindow 架构中,中心部件是主窗口中的主要工作区域,
        # 你可以在这个区域中放置应用程序的主要控件和布局。
        #
        # 为什么需要这行代码
        # 在 PyQt 应用程序中,主窗口通常包含多个部分,包括菜单栏、工具栏、状态栏和中心部件。
        # 中心部件是用户与应用程序交互的主要区域,因此需要将你创建的控件和布局添加到这个部件中。
        # 通过调用 setCentralWidget 方法,你可以确保你的控件显示在主窗口的正确位置。
        MainWindow.setCentralWidget(self.centralwidget)

        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 697, 23))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)

        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

        self.pushButton.clicked.connect(self.bindList)
        self.pushButton_2.clicked.connect(self.bindList2)

    # 使用dir filter获取文件
    def bindList(self):

        from PyQt5.QtWidgets import QFileDialog

        dir = QFileDialog() # 创建文本对话框
        dir.setFileMode(QFileDialog.ExistingFiles) # 设置多选
        dir.setDirectory('C:\\') # 设置初始化路径为C盘

        # 设置只显示图片文件
        dir.setNameFilter("图片文件(*.jpg *.png *.bmp *.ico *.gif)")
        if dir.exec_(): # 判断是否选择了文件
            self.listWidget.addItems(dir.selectedFiles()) #将选择的文件加到listWidget

    # 使用getOpenFileNames方法获取文件
    def bindList2(self):
        from PyQt5.QtWidgets import QFileDialog
        files,filetype = QFileDialog.getOpenFileNames(None,'打开','C:\\',
                                                      '图片文件(*.jpg *.png *.bmp *.ico *.gif)')
        self.listWidget.addItems(files)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "选择文件1"))
        self.pushButton_2.setText(_translate("MainWindow", "选择文件2"))

import sys
# 主方法,程序从此处启动PyQt设计的窗体
if __name__ == '__main__':
   app = QtWidgets.QApplication(sys.argv)
   app.setStyle("Fusion") # 设置窗口风格
   MainWindow = QtWidgets.QMainWindow() # 创建窗体对象
   ui = Ui_MainWindow() # 创建PyQt设计的窗体对象
   ui.setupUi(MainWindow) # 调用PyQt窗体的方法对窗体对象进行初始化设置
   MainWindow.show() # 显示窗体
   sys.exit(app.exec_()) # 程序关闭时退出进程

 

对话框选择文件夹

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'QFileDialog2.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.

# 对话框选择文件夹

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(654, 479)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(120, 90, 261, 41))
        self.lineEdit.setObjectName("lineEdit")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(30, 95, 81, 31))
        self.label.setObjectName("label")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(444, 100, 101, 23))
        self.pushButton.setObjectName("pushButton")
        self.listWidget = QtWidgets.QListWidget(self.centralwidget)
        self.listWidget.setGeometry(QtCore.QRect(120, 170, 441, 192))
        self.listWidget.setObjectName("listWidget")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 654, 23))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.pushButton.clicked.connect(self.bindList)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", "选择路径:"))
        self.pushButton.setText(_translate("MainWindow", "选择文件夹"))

    def bindList(self):
        from PyQt5.QtWidgets import QFileDialog
        import os
        # 创建路径选择对话框
        dir = QFileDialog.getExistingDirectory(None,"选择文件夹路径",os.getcwd())
        self.lineEdit.setText(dir) # lineEdit显示文件路径
        list = os.listdir(dir) # 遍历选择的文件夹
        self.listWidget.addItems(list)

import sys
# 主方法,程序从此处启动PyQt设计的窗体
if __name__ == '__main__':
   app = QtWidgets.QApplication(sys.argv)
   app.setStyle("Fusion") # 设置窗口风格
   MainWindow = QtWidgets.QMainWindow() # 创建窗体对象
   ui = Ui_MainWindow() # 创建PyQt设计的窗体对象
   ui.setupUi(MainWindow) # 调用PyQt窗体的方法对窗体对象进行初始化设置
   MainWindow.show() # 显示窗体
   sys.exit(app.exec_()) # 程序关闭时退出进程

 

posted on 2024-12-21 10:35  无名高地  阅读(15)  评论(0编辑  收藏  举报