Monday, September 12, 2011

A simple password generator with wxPython

This is a simple password generator.


  • Providing First and Last Name, then click Get Password! to generate the password
  • Line3, 4: you can change the combination here
  • Line20 - line25: Use 4 digits of last name to generat the numbers in password
  • Line27 - line28: Get the digits for the given alphabet 
  • Line57: Use lambda to pass multiple parameters



  1. import wx
  2. ALP = "HIJKLMNOPQRSTUVWXYZABCDEFG "
  3. NBR = "456789012345678901234567897"
  4. KEY = dict(zip(ALP, NBR))
  5. def getpass(event, firstname, lastname):
  6.     password = ''
  7.    
  8.     # Input both name are required
  9.     if firstname == '' or lastname == '':
  10.         passText.SetValue('Input both first and last name !')
  11.     else:    
  12.         firstname = firstname.upper()
  13.         lastname = lastname.upper()
  14.        
  15.         length = len(lastname)
  16.         # Fill in blank for the short last name
  17.         if length < 4:
  18.             lasttemp = lastname + '   '
  19.         else:
  20.             lasttemp = lastname
  21.         last4 = lasttemp[0:4]
  22.      
  23.         for i in last4:
  24.             password += KEY[i]
  25.         passText.SetValue('Password: ' + firstname + password)
  26. if __name__ == '__main__':
  27.     app = wx.App()
  28.     win = wx.Frame(None, title='Password Generator',
  29.             size = (300, 200), style=wx.SYSTEM_MENU|wx.CAPTION|wx.CLOSE_BOX)
  30.     bkg = wx.Panel(win)
  31.     font = wx.Font(11, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL)
  32.     bkg.SetFont(font)
  33.     firstTexts = wx.StaticText(bkg, -1, 'First Name: ', size=(90, 22))
  34.     firstTextc = wx.TextCtrl(bkg, -1, size=(200, 22))
  35.    
  36.     hboxf = wx.BoxSizer()
  37.     hboxf.Add(firstTexts, proportion=0, flag=wx.ALL, border=0)
  38.     hboxf.Add(firstTextc, proportion=0, flag=wx.ALL, border=0)
  39.    
  40.     lastTexts = wx.StaticText(bkg, -1, 'Last Name: ', size=(90, 22))
  41.     lastTextc = wx.TextCtrl(bkg, -1, size=(200, 22))
  42.    
  43.     hboxl = wx.BoxSizer()
  44.     hboxl.Add(lastTexts, proportion=0, flag=wx.ALL, border=0)
  45.     hboxl.Add(lastTextc, proportion=0, flag=wx.ALL, border=0)
  46.    
  47.     submitButton = wx.Button(bkg, label='Get Password!', size=(290, 22))
  48.     submitButton.Bind(wx.EVT_BUTTON,
  49.             lambda event: getpass(event, firstTextc.GetValue(), lastTextc.GetValue()))
  50.     passText = wx.TextCtrl(bkg, -1, '', style=wx.TE_READONLY|wx.BORDER_NONE, size=(290, 22))
  51.     hboxp = wx.BoxSizer()
  52.     hboxp.Add(passText, proportion=0, flag=wx.ALL, border=0)
  53.     vbox = wx.BoxSizer(wx.VERTICAL)
  54.     vbox.Add(hboxf, proportion=0, flag=wx.EXPAND|wx.ALL, border=5)
  55.     vbox.Add(hboxl, proportion=0, flag=wx.EXPAND|wx.ALL, border=5)
  56.     vbox.Add(submitButton,  proportion=0, flag=wx.ALL, border=5)
  57.     vbox.Add(hboxp, proportion=0, flag=wx.EXPAND|wx.ALL, border=5)
  58.     bkg.SetSizer(vbox)
  59.     win.Show()
  60.     app.MainLoop()

No comments:

Post a Comment