簡體   English   中英

PyQt5 文件打開對話框

[英]PyQt5 File open Dialog

有沒有辦法用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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM