最近在学习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()