wxPython - 检查空文本对话框

时间:2015-05-07 07:09:31

标签: python textbox dialog wxpython

我有一些使用wxpython的python代码,它将执行以下操作:

  1. 使用wxpython对话框向用户询问号码
  2. 检查当前是否正在使用该号码,如果该号码出现又要求提供号码
  3. 输入未使用的号码后,将出现一个新的对话框,询问名称。如果在使用中,它会再次询问
  4. 存储新号码和名称以供日后使用
  5. 代码看起来像这样:

    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)
    

    我的第一个问题是,有更好/更清洁的方法吗?

    我的第二个问题(我陷入困境):我需要能够处理一些异常情况。例如:

    • 如果用户X出了第一个对话框,我不想显示第二个对话框,我想继续进行,好像什么也没发生(即没有尝试存储数字或名称值)
    • 如果用户将号码或名称对话框条目留空,我想再次询问他们该信息

    我似乎无法了解wxpython如何处理对话框中的X按钮。目前,如果用户在第一个(数字)框中留下默认值,然后是X,则第二个框(名称)仍将显示

1 个答案:

答案 0 :(得分:0)

您应该能够捕获"/view.jsp"事件并阻止关闭对话框。但是,我相信你最好使用向导式方法。在第一步中,您将检查数字,然后单击下一步。然后你会接受名称并关闭对话框。我觉得这对用户来说是更自然的流程。

我把一个有趣的小例子放在一起,但你会注意到我没有以任何有意义的方式保存数据。你想自己添加:

wx.CLOSE