0

私のプログラムには(とりわけ)2つの機能があります。1つはファイルを保存する機能で、もう1つはファイルをロードする機能です。

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()

どちらも期待どおりに機能しますが、少し変更を加えました。1つのファイルがすでにロードされていて(name!='default')、別のファイルをロードしたい場合は、最初のファイルを保存してから、他のファイルをロードします。したがって、OnFileOpen(self、event)の上に次の2行だけを追加しました。

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

問題:最初のファイルは正常に保存されましたが、FileDialogが開きません(他のファイルを読み込めません)。「returnself.OnFileSave(event)」で「return」を削除すると、FileDialogが開き、ファイルを選択するとFileDialogが再び開きます。どうしたの?

4

1 に答える 1

1

戻らないでください。次のように呼び出すだけです:

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