实施;另存为;在保存对话框wxpython中
我有一个保存例程,它应该以以下方式提示用户:实施;另存为;在保存对话框wxpython中,python,wxpython,Python,Wxpython,我有一个保存例程,它应该以以下方式提示用户: 如果当前选定的文件名存在,则提示覆盖 如果当前选择的文件名为空(即“”),请设置一个对话框,要求用户插入文件名 如果当前选定的文件名不存在,请保存它 我的代码如下所示,但我觉得应该有更好的方法来实现这一点。现在,用户会收到一个对话框的提示,其中有“是、否、取消”选项,但我希望它是“是、另存为、取消”。我真的找不到任何方法将“否”按钮更改为“另存为”按钮,以打开一个对话框,用户可以在其中插入所需的文件名。有什么改进的建议吗 def saveProj
- 如果当前选定的文件名存在,则提示覆盖
- 如果当前选择的文件名为空(即“”),请设置一个对话框,要求用户插入文件名
- 如果当前选定的文件名不存在,请保存它李>
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
您使用了错误的对话框类型。改用:
- 它已经包含了带有
wx.FD\u OVERWRITE\u提示符的“提示确认文件是否将被覆盖”功能
- 这是其他所有人都使用的,所以用户会期待这种对话框,当他们得到其他东西时会感到困惑
我找不到在对话框中用“另存为”替换“保存”的方法(它只有
wx.FD\u Save
),但大多数人不会注意到这一点。谢谢,没有注意到这一重要区别。这样做时,实际上不需要“另存为”对话框,因为文件名总是在打开的浏览器中选择。我不希望在python中使用get和set。从wxPython 4.1开始,两个wx.Save
,wx.OVERWRITE\u提示符
都有前缀FD\ucode>