0

こんにちは、私はPython言語を学んでおり、GUIにはwxpythonを使用しています。私の GUI には 2 つのスピン ctrl、1 つのテキスト ctrl、1 つのパスワード ctrl があります。ユーザーが間違ったパスワードを入力すると、「パスワードが間違っています」というポップアップ メッセージが表示されます。次に、ユーザーは再びパスワードを入力する必要がありますが、パスワードフィールドが「2 spin ctrl, and 1 text 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.     
4

1 に答える 1

0

どこが間違っていたのかを確認できるように、既に持っているものを投稿する必要があります。また、使用している wxPython と Python のバージョンと OS を知っておくとよいでしょう。とにかく、これを行う1つの方法を次に示します。

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()
于 2013-05-07T16:13:54.813 に答える