python实例--随机密码生成器

发布时间:2019-09-20 07:39:14编辑:auto阅读(1819)

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

     

关键字