我有一些使用wxpython的python代码,它将执行以下操作:
代码看起来像这样:
while True:
codeNumberPrompt = wx.TextEntryDialog(self, "New code #: ", "Add New Code", str(len(self.codes)), style=wx.OK)
codeNumberPrompt.ShowModal()
self.codeNumber = codeNumberPrompt.GetValue()
#check if number is in use
if int(self.codeNumber) not in self.numbersInUse:
#new code name input
while True:
codeNamePrompt = wx.TextEntryDialog(self, "New code name: ", "Add New Code", style=wx.OK)
codeNamePrompt.ShowModal()
self.codeName = codeNamePrompt.GetValue()
#check if name is in use
if self.codeName.lower() not in self.namesInUse:
break
wx.MessageBox('Code name is currently in use', 'Warning', wx.OK | wx.ICON_INFORMATION)
break
else:
wx.MessageBox('Code number is currently in use', 'Warning', wx.OK | wx.ICON_INFORMATION)
我的第一个问题是,有更好/更清洁的方法吗?
我的第二个问题(我陷入困境):我需要能够处理一些异常情况。例如:
我似乎无法了解wxpython如何处理对话框中的X按钮。目前,如果用户在第一个(数字)框中留下默认值,然后是X,则第二个框(名称)仍将显示
答案 0 :(得分:0)
您应该能够捕获"/view.jsp"
事件并阻止关闭对话框。但是,我相信你最好使用向导式方法。在第一步中,您将检查数字,然后单击下一步。然后你会接受名称并关闭对话框。我觉得这对用户来说是更自然的流程。
我把一个有趣的小例子放在一起,但你会注意到我没有以任何有意义的方式保存数据。你想自己添加:
wx.CLOSE