0

我的程序有两个功能(除其他外):一个用于保存文件,一个用于加载文件:

def OnFileSave(self, event):
    mystring = ...
    f = file(os.path.join(dirName[0], fileName[0]), 'w')
    f.write(mystring)
    self.PushStatusText("Spiel gespeichert!")
    f.close()
    e.Skip()
    return True

def OnFileOpen(self, event):
    dlg = wxFileDialog(self, "Load File", dirName[0], fileName[0],
                       "MyFiles (*.mf)|*.mf|All Files|*.*", wx.OPEN)
    if (dlg.ShowModal() == wx.ID_OK):
        fileName[0] = dlg.GetFilename()
        dirName[0] = dlg.GetDirectory()
        f = file(os.path.join(dirName[0]+'\\', fileName[0]), 'r')
        ...
        dlg.Destroy()

两者都按预期工作,但现在我做了一点改变:当一个文件已经加载(名称!='default')并且我想加载另一个文件时,应该在加载另一个文件之前保存第一个文件。所以我只在 OnFileOpen(self,event) 的顶部添加了这两行:

if name != 'default':
    return self.OnFileSave(event)

现在的问题:第一个文件成功保存,但 FileDialog 没有打开(所以我无法加载另一个文件)。当我在“return self.OnFileSave(event)”中删除“return”时,FileDialog 打开,选择文件后 FileDialog 再次打开。有什么问题?

4

1 回答 1

1

不要返回。只需调用类似:

if name != 'default':
    self.OnFileSave(None)
于 2013-01-08T07:56:41.020 回答