我有一些使用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框中留下一个默认值,第二个框(名称)仍将显示
您应该能够捕获
wx.CLOSE
事件并阻止对话框关闭。但是,我相信你最好使用向导式的方法。在第一步中,您将检查号码,然后单击下一步。然后您将接受该名称并关闭对话框。我觉得这对用户来说是一个更自然的流程。在我做了一个有趣的小例子,但是你会注意到我没有以任何有意义的方式保存数据。您需要自己添加:
相关问题 更多 >
编程相关推荐