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_()) # 程序关闭时退出进程