[PyQT5] QFileDialog窗口关闭时主窗口也关闭

新手,在尝试写一个pyqt5的小软件。

现在是要点击button后,出现QFileDialog文件对话框,打开文件或保存文件

但是debug时点击button,打开对话框,点击关掉对话框或取消选择时,整个界面都会退出,只有Process finished with exit code 1的提示

我希望关闭窗口时,主窗口不能被影响,请问哪里出错?

以下是相关代码

    def __init__(self,parent=None):

        #button clicked
        self.loadFileButton.clicked.connect(self.loadFile)
        self.generateButton.clicked.connect(self.generateFile)




    #loadFileButton 加载配置文件到textEdit
    def loadFile(self):
        path = QFileDialog.getOpenFileName(self,
                                                '加载配置文件',
                                                '',
                                                'Python (*.py)')
        f = open(path[0],'r+',encoding='UTF-8')
        with f:
            self.data = "".join(f.readlines())
            self.textEdit.setText(self.data)

    #generateButton 保存配置文件
    def generateFile(self):
        self.data = self.textEdit.toPlainText()
        path = QFileDialog.getSaveFileName(self,
                                               "保存配置文件",
                                               '',
                                               'Python (*.py)')
        with open(path[0],'w',encoding='UTF-8') as f:
            f.write(self.data)

你试试path = QFileDialog.getOpenFileName(filter='Python (*.py)')

如果不行,你试下try来检查错误,不会直接退出

def loadFile(self):
        try:
                    path = QFileDialog.getOpenFileName(filter='Python (*.py)')
                    f = open(path[0],'r+',encoding='UTF-8')
                    with f:
                            self.data = "".join(f.readlines())
                            self.textEdit.setText(self.data)
        except Exception as e:
           print(e)

这样就应该不会报错了

path = QFileDialog.getOpenFileName(filter='Python (*.py)')
if path!="":
    f = open(path[0],'r+',encoding='UTF-8')
    with f:
        self.data = "".join(f.readlines())
        self.textEdit.setText(self.data)

楼上是OK的,不过其实要把path变成str之后,if语句才有效,因为QFileDialog.getOpenFileName返回的是tuple(filename, filters)

代码如下

    def loadFile(self):
        path,_ = QFileDialog.getOpenFileName(self,"加载配置文件",'','Python (*.py)')
        if path == '':
            pass
        else:
            f = open(path, 'r+', encoding='UTF-8')
            with f:
                self.data = "".join(f.readlines())
                self.textEdit.setText(self.data)