栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Qt 文件夹打开的一种样式

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Qt 文件夹打开的一种样式

本文提供了一种快速定位文件夹、并且获取其路径的组合窗口

样式如下,点击浏览可以打开如下文件夹界面,选择框可以设定在展示框内的路径是否为相对路径

实现效果如下,更改选项框后,文本输入框内的路径会在相对路径和绝对路径之间切换

# -*- coding: utf-8 -*-
import os
from PyQt5.QtCore import QDir
from PyQt5.QtWidgets import QLineEdit, QPushButton, QFileDialog, Qframe, QHBoxLayout, QApplication, QMainWindow, QCheckBox


class MainWindow(QMainWindow):

    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        widget = PathWidget(self)
        self.setCentralWidget(widget)


class PathWidget(Qframe):

    def __init__(self, parent=None):
        super().__init__(parent)
        self.createWidgets()

    def createWidgets(self):
        self.pathLineEdit = QLineEdit(self)

        self.openPathButton = QPushButton(self)
        self.openPathButton.clicked.connect(self.openPathDialog)
        self.openPathButton.setText("浏览")

        self.isAbsolutePath = QCheckBox("是否为相对路径")

        layout = QHBoxLayout()
        layout.addWidget(self.pathLineEdit)
        layout.addWidget(self.openPathButton)
        layout.addWidget(self.isAbsolutePath)
        self.setLayout(layout)

    def openPathDialog(self):
        path = self.getPath(self.pathLineEdit.text())
        if not path:
            return

        self.pathLineEdit.setText(path)
        if path and not self.pathLineEdit.isVisible():
            self.pathLineEdit.setVisible(True)

    def getPath(self, value=""):
        base = "E:"
        fileDir = QDir(base)
        oldPath = fileDir.absoluteFilePath(value) if not os.path.isabs(value) else value
        oldPath = fileDir.cleanPath(oldPath)
        startPath = oldPath if os.path.isdir(oldPath) else fileDir.path()
        path = QFileDialog.getExistingDirectory(None, "选择目录", startPath, QFileDialog.ShowDirsonly | QFileDialog.DontResolveSymlinks)
        if self.isAbsolutePath.checkState():
            path = fileDir.absoluteFilePath(path)
        else:
            path = fileDir.relativeFilePath(path)
        return path


if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    mainWindow = MainWindow()
    mainWindow.show()
    sys.exit(app.exec_())

简单说一下,我们主要用到了QT自带的 fileDir,并且通过 “QFileDialog.getExistingDirectory”该方法去获取一个默认路径为E盘的文件夹选择框

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/300240.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号