首页 文章

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

提问于
浏览
0

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

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

文件“C:\ Users \ test \ Documents \ Python_Projects \ final_project \ myPDFviewer.py”,第36行,在sys.exit(app.exec_())文件“C:\ Users \ test \ Documents \ Python_Projects \ final_project \ myPDFviewer.py“,第24行,在setExistingDirectory options = options中)builtins.TypeError:getExistingDirectory(parent:QWidget = None,caption:str ='',directory:str ='',options:Union [QFileDialog.Options,QFileDialog . 选项] = QFileDialog.ShowDirsOnly):参数1有意外类型'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_())

1 回答

  • 0

    我找到了之前没有用的解决方案因为我没有将对象对话框引用到 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()
    

相关问题