当消息框显示时不重置字段

问题描述:

大家好,我正在学习python语言,并为gui我使用wxpython。我在我的GUI中有2个旋转ctrl,1个文本ctrl,1个密码ctrl。每当用户输入错误的密码时,将弹出“密码错误”消息。然后用户再次输入密码,但是发生了什么是密码字段用“2旋转ctrl和1文本ctrl”重置,我想保留用户输入错误密码时spinctrl和textctrl的值&消息框将显示 - 向上。如何实现这一目标?请建议我。当消息框显示时不重置字段

class child(wx.Frame):  
    self.sc1 = wx.SpinCtrl(self,-1, pos=(-1, -1)) 
    self.paswd = wxTextCtrl(self, -1, (-1, -1),(30,20)) 
    def main(self, event): 
    lan1 = self.sc1.GetValue() 
    password = self.paswd.GetValue() 
    if lan1 > 16 : 
    wx.MessageBox("zzzzzzzzzzzz","warning") 
    if password = license(hard coded): 
     """show message box 
     and install""" 
    else: 
     """re enter password""" 
     Child().Show() 
    //when child window again pop up spin ctrl also set to 0, i want to keep spin ctrl value when user enter wrong password.  
+0

请提供您到目前为止尝试过的方法。 – alecxe 2013-05-07 04:17:59

+0

@alecxe我做了那么多无论我在描述中提到,但后来开始搜索,但没有得到解决方案,所以我要求建议或链接。 – nammu 2013-05-07 10:24:49

+0

当然,我明白。虽然通常通过提供一些代码来接收答案会更容易。另见[this](http://blog.*.com/2010/09/good-subjective-bad-subjective/)。 – alecxe 2013-05-07 10:29:00

你应该发布你已经有的东西,这样我们可以看到你出错的地方。知道你正在使用哪个版本的wxPython和Python以及哪个操作系统也是很好的。无论如何,这里有一种方法可以做到这一点:

import wx 

######################################################################## 
class LoginPanel(wx.Panel): 
    """""" 

    #---------------------------------------------------------------------- 
    def __init__(self, parent): 
     """Constructor""" 
     wx.Panel.__init__(self, parent) 

     self.mainSizer = wx.BoxSizer(wx.VERTICAL) 
     userSizer = wx.BoxSizer(wx.HORIZONTAL) 
     pwdSizer = wx.BoxSizer(wx.HORIZONTAL) 

     userLbl = wx.StaticText(self, label="Username:") 
     userSizer.Add(userLbl, 0, wx.CENTER|wx.ALL, 5) 
     self.userTxt = wx.TextCtrl(self) 
     userSizer.Add(self.userTxt, 1, wx.EXPAND|wx.ALL, 5) 

     pwdLbl = wx.StaticText(self, label="Password:") 
     pwdSizer.Add(pwdLbl, 0, wx.CENTER|wx.ALL, 5) 
     self.pwdTxt = wx.TextCtrl(self, style=wx.TE_PASSWORD) 
     pwdSizer.Add(self.pwdTxt, 1, wx.EXPAND|wx.ALL, 5) 

     loginBtn = wx.Button(self, label="Login") 
     loginBtn.Bind(wx.EVT_BUTTON, self.onLogin) 

     self.mainSizer.Add(userSizer, 0, wx.EXPAND) 
     self.mainSizer.Add(pwdSizer, 0, wx.EXPAND) 
     self.mainSizer.Add(loginBtn, 0, wx.CENTER|wx.ALL, 5) 
     self.SetSizer(self.mainSizer) 

    #---------------------------------------------------------------------- 
    def onLogin(self, event): 
     """ 
     Login or show msg box if password wrong 
     """ 
     username = self.userTxt.GetValue() 
     pwd = self.pwdTxt.GetValue() 

     if pwd == "password": 
      print "logging in" 
     else: 
      msg = "Wrong password or username!" 
      wx.MessageBox(msg, "Error", wx.OK|wx.ICON_INFORMATION) 


######################################################################## 
class LoginFrame(wx.Frame): 
    """""" 

    #---------------------------------------------------------------------- 
    def __init__(self): 
     """Constructor""" 
     wx.Frame.__init__(self, None, title="Login") 
     panel = LoginPanel(self) 
     self.Show() 

if __name__ == "__main__": 
    app = wx.App(False) 
    frame = LoginFrame() 
    app.MainLoop() 
+0

我编辑了我的问题,请检查并告诉我程序逻辑中出了什么问题 – nammu 2013-05-11 09:32:16