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

[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条)

报告相同问题?

悬赏问题

  • ¥15 求一整套c语言的modbus rtu命令功能码
  • ¥15 对语音信号进行变调时,间接改变时序从而实现语音变速,进而将变调与变速同时实现、参数合成法换为波形合成法
  • ¥30 德飞莱51单片机实现C4炸弹
  • ¥50 CrossLink-LIF-MD6000 型 FPGA 的 CMOS 转 MIPI D-PHY IP 核功能使用异常
  • ¥15 proteus控制16x16LED点阵显示屏的设计
  • ¥30 求会做山景bp1048b2程序的。做直播声卡用
  • ¥15 求数学建模论文问题指导
  • ¥15 51单片机与数码管实现电子琴
  • ¥15 h3.6m 人类行为预测论文复现
  • ¥50 wordpress项目注册报失败刷新后其实是成功状态,请求排查原因