You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.6+PyQt获取文件夹路径(非文件)的代码实现求助

解决PyQt选择文件夹并获取路径的问题

嘿,我刚好碰到过这个需求,给你分享下具体怎么用Python 3.6 + PyQt实现文件夹选择对话框,获取路径并打印~

核心思路

PyQt里的QFileDialog有专门针对文件夹选择的方法——getExistingDirectory(),这个方法就是用来打开文件夹选择对话框(而非文件选择框)的,完美匹配你的需求。

两种实现方式

1. 纯代码快速实现(无需Qt Designer)

如果想先做个测试示例,直接用代码创建界面和触发按钮即可:

from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QFileDialog
import sys

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle("文件夹选择示例")
        self.setGeometry(100, 100, 300, 200)
        
        # 创建触发选择的按钮
        self.select_btn = QPushButton("选择目标文件夹", self)
        self.select_btn.move(50, 50)
        self.select_btn.clicked.connect(self.pick_folder)

    def pick_folder(self):
        # 打开文件夹选择对话框
        selected_folder = QFileDialog.getExistingDirectory(
            self,
            "请选择目标文件夹",  # 对话框标题
            "",  # 初始打开路径,空则默认当前工作目录
            # 强制只显示文件夹,不解析符号链接
            QFileDialog.ShowDirsOnly | QFileDialog.DontResolveSymlinks
        )
        
        # 判断用户是否真的选择了文件夹(点击取消会返回空字符串)
        if selected_folder:
            print("你选中的文件夹路径:", selected_folder)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

2. 结合Qt Designer生成的表单

如果你已经用Qt Designer做好了界面,只需要给按钮绑定点击事件就行:

假设你的Qt Designer生成的ui文件叫your_form.ui,里面有个按钮的对象名叫pushButton_selectFolder,代码可以这么写:

from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog
from PyQt5.uic import loadUi
import sys

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        # 加载Qt Designer的ui文件
        loadUi("your_form.ui", self)
        
        # 绑定按钮点击事件到文件夹选择方法
        self.pushButton_selectFolder.clicked.connect(self.pick_folder)

    def pick_folder(self):
        selected_folder = QFileDialog.getExistingDirectory(
            self,
            "请选择目标文件夹",
            "",
            QFileDialog.ShowDirsOnly | QFileDialog.DontResolveSymlinks
        )
        
        if selected_folder:
            print("你选中的文件夹路径:", selected_folder)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

关键提示

  • 一定要判断selected_folder是否为空:用户点击对话框的「取消」按钮时,方法会返回空字符串,直接打印的话会输出空内容,加个判断更严谨。
  • 参数QFileDialog.ShowDirsOnly是核心:它确保对话框只展示文件夹,不会出现文件选项,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Richard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:42:53