python實例--隨機密碼生成器

      最近在學習python,抽空看了看圖形化模塊wx,順手寫了個隨機密碼生成器,程序運行界面如下圖:(注:在Ubuntu下運行結果)

 

源代碼如下:

 

  1. import wx 
  2. import string 
  3. import random 
  4.  
  5. class Frame(wx.Frame): 
  6.     def __init__(self,parent,id): 
  7.         wx.Frame.__init__(self,parent,id,'隨機密碼生成器',size=(430,285)) 
  8.         panel = wx.Panel(self) 
  9.         font=wx.Font(9,wx.MODERN, wx.NORMAL, wx.NORMAL) 
  10.         wx.StaticBox(panel, -1, '參數選項', (5,10), (300,80)) 
  11.         wx.StaticText(panel,-1,'密碼長度',(30,30)) 
  12.         self.usertext = wx.TextCtrl(panel,-1,'8',(100,30),(40,20)) 
  13.         self.usertext.SetFont(font) 
  14.         wx.StaticText(panel,-1,'密碼數量',(150,30)) 
  15.         self.usertext1 = wx.TextCtrl(panel,-1,'1',(220,30),(40,20)) 
  16.         self.usertext1.SetFont(font) 
  17.         self.select1 = wx.CheckBox(panel, -1, '字母', (30,60)) 
  18.         self.select1.SetValue(True) 
  19.         self.select2 = wx.CheckBox(panel, -1, '數字', (100,60)) 
  20.         self.select2.SetValue(True) 
  21.         self.select3 = wx.CheckBox(panel, -1, '特殊字符', (170,60)) 
  22.         self.select3.SetValue(False) 
  23.         self.button1 = wx.Button(panel, label='生成'pos=(320, 30), size=(80, 25)) 
  24.         self.button2 = wx.Button(panel, label='清空'pos=(320, 60), size=(80, 25)) 
  25.         self.usertext2 = wx.TextCtrl(panel,-1,'',(30,100),(350,150),style=wx.TE_MULTILINE|wx.HSCROLL|wx.TE_READONLY) 
  26.         self.usertext2.SetFont(font) 
  27.         self.Bind(wx.EVT_BUTTON, self.show, self.button1) 
  28.         self.Bind(wx.EVT_BUTTON, self.clear, self.button2)  
  29.                  
  30.     def show(self,event): 
  31.         value1 = self.usertext.GetValue() 
  32.         value2 = self.usertext1.GetValue() 
  33.         value3 = self.select1.GetValue() 
  34.         value4 = self.select2.GetValue() 
  35.         value5 = self.select3.GetValue() 
  36.         yy = '~!@#$%^&*(),<>?' 
  37.         uu='' 
  38.         bob = [] 
  39.          
  40.         if not value1 or not value2: 
  41.             wx.MessageBox('請輸入密碼長度和密碼數量','錯誤') 
  42.         if value3 : 
  43.             uu = uu+string.ascii_letters 
  44.         if value4 : 
  45.             uu = uu+string.digits 
  46.         if value5 : 
  47.             uu = uu+yy 
  48.         if not uu : 
  49.             wx.MessageBox('請選擇密碼類型','錯誤') 
  50.         else : 
  51.             for i in range(int(value2)): 
  52.                 tt = ''.join(random.sample(list(uu),int(value1))) 
  53.                 bob.append(tt)                         
  54.                 self.usertext2.SetValue('\n'.join(bob)) 
  55.  
  56.     def clear(self,event): 
  57.         self.usertext2.Clear() 
  58.  
  59. if __name__ == '__main__': 
  60.     app = wx.PySimpleApp() 
  61.     frame = Frame(parent=Noneid=-1) 
  62.     frame.Show() 
  63.     app.MainLoop() 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章