gpt4 book ai didi

python - 在保存对话框wxpython中实现 "Save as"

转载 作者:行者123 更新时间:2023-12-02 02:06:57 24 4
gpt4 key购买 nike

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

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

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

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

最佳答案

您使用了错误的对话框类型。使用 FileDialog相反:

  • 它已经包含了“如果文件将被覆盖时提示确认”的功能,wx.FD_OVERWRITE_PROMPT
  • 这就是其他人使用的方式,因此用户会期待这种对话并在他们得到其他东西时感到困惑

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

关于python - 在保存对话框wxpython中实现 "Save as",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14524525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com