pannnsy 2018-12-11 06:06 采纳率: 100%
浏览 5341
已采纳

[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)
  • 写回答

2条回答 默认 最新

  • lyhsdy 2018-12-11 06:23
    关注

    你试试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)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 vb net 使用 sendMessage 如何输入鼠标坐标
  • ¥200 求能开发抖音自动回复卡片的软件
  • ¥15 关于freesurfer使用freeview可视化的问题
  • ¥100 谁能在荣耀自带系统MagicOS版本下,隐藏手机桌面图标?
  • ¥15 求SC-LIWC词典!
  • ¥20 有关esp8266连接阿里云
  • ¥15 C# 调用Bartender打印机打印
  • ¥15 我这个代码哪里有问题 acm 平台上显示错误 90%,我自己运行好像没什么问题
  • ¥50 C#编程中使用printDocument类实现文字排版打印问题
  • ¥15 找会编程的帅哥美女 可以用MATLAB里面的simulink编程,用Keil5编也可以。