PyQt5文件打开对话框



有没有办法用pyqt5文件对话框打开文件夹

我试着引用引号,我想打开一个文件夹或带有子目录或子文件夹的目录

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QFileDialog, QTextEdit, QPushButton, QLabel, QVBoxLayout

class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.resize(800, 600)
self.button1 = QPushButton('Open Project Folder')
self.button1.clicked.connect(self.get_folder)

self.labelImage = QLabel()
self.textEditor = QTextEdit()
layout = QVBoxLayout()
layout.addWidget(self.button1)
layout.addWidget(self.labelImage)
layout.addWidget(self.button2)
layout.addWidget(self.textEditor)
self.setLayout(layout)
def get_folder(self):
file_name, _ = QFileDialog.getOpenFileName(
self, 'Project Data', r"", "")
print(file_name)
if __name__ == '__main__':
app = QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())```

QFileDialog有各种静态函数,如果需要打开目录,请不要使用getOpenFileName,而是使用getExistingDirectory()

正如您从文档中看到的,参数略有不同,并且如果从python shell运行help(QtWidgets.QFileDialog.getExistingDirectory),您将看到用python语法编写的完整参数签名和返回值。

getExistingDirectory(parent: QWidget = None, caption: str = '', directory: str = '', options: Union[QFileDialog.Options, QFileDialog.Option] = QFileDialog.ShowDirsOnly) -> str

最后一部分(-> str(表示只有一个返回值,即所选目录的字符串(如果用户取消对话框,该字符串将为空(。

def get_folder(self):
folder = QFileDialog.getExistingDirectory(
self, 'Project Data', '')
if folder:
print(folder)

我建议您始终研究您正在使用的每个类的文档,并使用官方文档;即使是面向C++的,函数在PyQt上也有相同的名称,并且它们的参数/返回值在99%的情况下都是相同的。每当您对错误的参数或返回的数据有疑问或遇到问题时,您可以查看官方PyQt文档,也可以在python shell中使用help(class.function)

最新更新