在保存对话框wxpython中实现“另存为”

2024-09-30 14:29:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个保存例程,它应该以以下方式提示用户:

  • 如果当前选定的文件名存在,则提示覆盖
  • 如果当前选定的文件名为空(即“”),请设置一个对话框,要求用户插入文件名
  • 如果当前选择的文件名不存在,请保存!在

我的代码目前如下,但我觉得应该有一个更好的方法来做到这一点。“是的,用户现在将被提示为“是,但我想取消”对话框。我真的找不到任何方法将“否”按钮更改为“另存为”按钮,该按钮将打开一个用户可以插入所需文件名的对话框。有什么改进的建议吗?在

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

更新

代码已成功更改为:

^{pr2}$

Tags: 代码用户idfalsereturn文件名resultwindow
1条回答
网友
1楼 · 发布于 2024-09-30 14:29:19

您使用了错误的对话框类型。请改用FileDialog

  • 它已经使用wx.FD_OVERWRITE_PROMPT包含“如果文件将被覆盖,则提示确认”功能
  • 这是其他人使用的,所以用户会期望这种对话,当他们得到其他东西时会感到困惑

我找不到在对话框中用“另存为”替换“Save”的方法(它只有wx.FD_SAVE),但大多数人不会注意到这一点。在

相关问题 更多 >