次の方法でユーザーにプロンプトを表示する保存ルーチンがあります。
- 現在選択されているファイル名が存在する場合、上書きのプロンプト
- 現在選択されているファイル名が空の場合 (例: "")、ユーザーにファイル名の挿入を求めるダイアログを設定します
- 現在選択されているファイル名が存在しない場合は、保存してください。
私のコードは現在以下のようになっていますが、これを行うにはもっと良い方法があるはずです。現在、ユーザーは「はい、いいえ、キャンセル」という選択肢を持つダイアログでプロンプトが表示されますが、「はい、名前を付けて保存、キャンセル」にしたいと思います。「いいえ」ボタンを、ユーザーが必要なファイル名を挿入できるダイアログを開く「名前を付けて保存」ボタンに変更する方法が本当に見つかりませんでした。これを改善する提案はありますか?
def saveProject(window):
if os.path.exists(window.getGlobalSettings().getCurrentFileName()): #File exists from before
dlg = wx.MessageDialog(window,
"Overwrite existing project file " + window.getGlobalSettings().getCurrentFileName() + "?",
"Overwrite existing project file",
wx.SAVE|wx.CANCEL|wx.ICON_QUESTION)
result = dlg.ShowModal()
dlg.Destroy()
if result == wx.ID_YES:
save(window,currentFileName)
return True
elif result == wx.ID_SAVEAS:
#TODO: do shit here
return False
elif result == wx.ID_NO:
return False
elif result == wx.ID_CANCEL:
return False
elif window.getGlobalSettings().getCurrentFileName == "":
#TODO: do shit here
return False
else:
save(window,window.getGlobalSettings().getCurrentFileName())
return True
アップデート
コードは次のように正常に変更されました。
def saveProject(window):
dlg = wx.FileDialog(window, "Save project as...", os.getcwd(), "", "*.kfxproject", \
wx.SAVE|wx.OVERWRITE_PROMPT)
result = dlg.ShowModal()
inFile = dlg.GetPath()
dlg.Destroy()
if result == wx.ID_OK: #Save button was pressed
save(window,inFile)
return True
elif result == wx.ID_CANCEL: #Either the cancel button was pressed or the window was closed
return False