如何使用PyQt5在python中创建文件对话框

2024-10-04 03:27:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为PDFviewer的python类,在运行该程序时,系统将显示一个窗口,该窗口处理button(打开文件夹),它将打开一个文件对话框,允许用户选择一个目录并显示其中的文件。在

问题是,当我尝试单击按钮时,系统崩溃并显示以下错误:

File "C:\Users\test\Documents\Python_Projects\final_project\myPDFviewer.py", line 36, in sys.exit(app.exec_()) File "C:\Users\test\Documents\Python_Projects\final_project\myPDFviewer.py", line 24, in setExistingDirectory options=options)

builtins.TypeError: getExistingDirectory(parent: QWidget = None, caption: str = '', directory: str = '', options: Union[QFileDialog.Options, QFileDialog.Option] = QFileDialog.ShowDirsOnly): argument 1 has unexpected type 'bool'

代码:

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import (QApplication, QCheckBox, QColorDialog, QDialog,
                             QErrorMessage, QFileDialog, QFontDialog, QFrame, QGridLayout,
                             QInputDialog, QLabel, QLineEdit, QMessageBox, QPushButton)

from PyQt5.QtCore import QDir, Qt

import pdfviewer

class pdfViewer(pdfviewer.Ui_PdfPreviewWindow):

    def __init__(self,PdfPreviewObj ):
        self.PdfPreviewObj =PdfPreviewObj 
        self.setupUi(PdfPreviewObj)
        self.PdfPreviewObj.show()
        self.pushButtonOpenFolder.clicked.connect(self.setExistingDirectory)



    def setExistingDirectory(self,qf):    
        options = QFileDialog.DontResolveSymlinks | QFileDialog.ShowDirsOnly
        directory = QFileDialog.getExistingDirectory(self,
                                                     "Open Folder",
                options=options)






if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    PdfPreviewWindow = QtWidgets.QMainWindow()
    pdfViewerUi = pdfViewer(PdfPreviewWindow)
    sys.exit(app.exec_())

Tags: 文件fromimportselfapp系统syspyqt5
1条回答
网友
1楼 · 发布于 2024-10-04 03:27:37

我找到了以前不起作用的解决方案,因为我没有将对象对话框引用到self,所以解决方案变成:

def setExistingDirectory(self): 
    self.dialog = Dialog()
    options = QFileDialog.DontResolveSymlinks | QFileDialog.ShowDirsOnly
    self.directory = QFileDialog.getExistingDirectory(self.dialog, "Open Folder" ,options=options)
    self.dialog.show()       

相关问题 更多 >