我有一个保存例程,应该以下列方式提示用户:
我的代码目前如下,但我觉得应该有更好的方法来做到这一点。现在,用户会看到一个对话框,其中包含选项“是,否,取消”,但我希望它为“是,另存为,取消”。我真的找不到任何方法将“否”按钮更改为“另存为”按钮,打开一个对话框,用户可以在其中插入所需的文件名。有任何改进建议吗?
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
答案 0 :(得分:1)
您使用的是错误的对话框类型。请改用FileDialog:
wx.FD_OVERWRITE_PROMPT
我找不到用对话框中的“另存为”替换“保存”的方法(它只有wx.FD_SAVE
),但大多数人都不会注意到这一点。