PyQt5学习:通过按钮控件打开windows系统文件软件(文件资源管理器)的文件夹进行浏览文件夹下所有文件

1、前言

在学习Pyqt5过程中,遇到了想通过按钮等控件打开文件夹,类似于下面(图1)的 '打开文件夹一样' 的效果

(图1)

本来以为PyQt5 会有类似于QFileDialog 的文件对话框进行文件夹打开浏览,但并没有发现。

在进一步查找资料发现可以通过Python 中内置os 模块库可以达到打开文件夹要求。

2、pyqt5实现打开文件夹

首先在D盘新建一个用于测试的文件夹(我的如下面 图2)

(图2)

下面直接放代码,创建py文件直接复制即可使用。

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

# Form implementation generated from reading ui file 'openfoldertest.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(320, 240)
        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(80, 80, 111, 31))
        self.pushButton.setObjectName("pushButton")

        self.retranslateUi(Form)
        #点击按钮信号传送到打开文件夹函数
        self.pushButton.clicked.connect(self.openfolder)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.pushButton.setText(_translate("Form", "打开文件夹"))

    def openfolder(self,Form):
        '''打开系统文件资源管理器的对应文件夹'''
        import os
        folder = r'D:\aatest'
        #方法1:通过start explorer
        os.system("start explorer %s" %folder)
        # 方法2:通过startfile
        os.startfile(folder)

if __name__ == "__main__":
    import sys
    QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)# 适配2k等高分辨率屏幕,低分辨率屏幕可除去
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())

运行点击‘打开文件夹按钮’结果如下面图3

(图3)

3、分析与说明

如上面代码,我用了两种方法打开文件夹,所以会弹出两个文件软件窗口。在实际使用选其一即可。比较推荐方法2。

方法1:

#方法1:通过start explorer
        os.system("start explorer %s" %folder)

方法2:

        # 方法2:通过startfile
        os.startfile(folder)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值