Форум сайта python.su
Всем здравствуйте!
Написал генератор паролей на wxPython. Программа, как и алгоритм маленькая. Просто это моя первая более-менее практичная прога на wxPython. Можете покритиковать(объективно)?.
Буду благодарен.
Главный модуль:
# _*_ coding: utf-8 _*_ import wx import gen class Frame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, -1, u"Генератор паролів", pos=(100,100), size=(690,500)) # panel self.panel = wx.Panel(self, -1) self.panel.SetBackgroundColour("white") # check_boxs self.check_box1 = wx.CheckBox(self.panel, -1, "A-Z", pos=(20,20), size=(100,20)) self.check_box2 = wx.CheckBox(self.panel, -1, "a-z", pos=(20,50), size=(100,20)) self.check_box3 = wx.CheckBox(self.panel, -1, "0-9", pos=(20,80), size=(100,20)) self.check_box4 = wx.CheckBox(self.panel, -1, u"Знаки правопису та інші (!, ;, %, ?, *, ...)", pos=(20,110), size=(250,20)) self.check_box1.SetValue(True) self.check_box2.SetValue(True) self.check_box3.SetValue(True) self.check_box4.SetValue(True) # SpinCtrls self.sc1 = wx.SpinCtrl(self.panel, -1, value="", pos=(200, 140), size=(80, -1), min=1, max=100, initial=8) self.sc2 = wx.SpinCtrl(self.panel, -1, value="", pos=(200, 170), size=(80, -1), min=1, max=20, initial=10) # Labels self.label1 = wx.StaticText(self.panel, -1, u"Кількість символів: ", pos=(20, 140), size=(150, -1)) self.label2 = wx.StaticText(self.panel, -1, u"Кількість паролів: ", pos=(20, 170), size=(150, -1)) # TextCtrl self.output_field = wx.TextCtrl(self.panel, -1, "", pos=(310, 20), size=(330, 400), style=wx.TE_MULTILINE) self.output_field.SetInsertionPoint(0) # button self.button_ok = wx.Button(self.panel, id=-1, label="OK", pos=(20, 200), size=(260, 220), style=wx.ID_OK) # Binders self.Bind(wx.EVT_BUTTON, self.OnClickOk, self.button_ok) def OnClickOk(self, event): up_az = self.check_box1.GetValue() low_az = self.check_box2.GetValue() digitals = self.check_box3.GetValue() ot_chars = self.check_box4.GetValue() c_char = self.sc1.GetValue() c_pass = self.sc2.GetValue() # отримуємо список згенерованих паролей ф-цією gen.gen pass_list = gen.gen(up_az, low_az, digitals, ot_chars, c_char, c_pass) self.output_field.Clear() # умова, котра змінює розміри фрейма та поля виводу паролю, # в залежності від кількості символів в паролі if c_char>35: temp_w = 380+(c_char-35)*7 self.output_field.SetSize((temp_w, 400)) self.SetSize((temp_w+410, 500)) else: self.output_field.SetSize((330, 400)) self.SetSize((690,500)) # вивід паролей for password in pass_list: self.output_field.AppendText(password+"\n") class MyApp(wx.App): def OnInit(self): self.main_frame = Frame() self.SetTopWindow(self.main_frame) self.main_frame.Show() return True if __name__=="__main__": app = MyApp() app.MainLoop()
# _*_ coding: utf-8 _*_ u""" Модуль містить ф-нкцію генерації паролей з латинських\n символів, цифр та знаків правопису та інших.""" import random import string def gen(up_az, low_az, digit, chars, c_ch, c_pass): gen_string = "" res_list = [] if up_az: gen_string += string.ascii_uppercase*3 if low_az: gen_string += string.ascii_lowercase*3 if digit: gen_string += string.digits if chars: gen_string += string.punctuation for i in range(0, c_pass): temp = "" for j in range(0, c_ch): temp += random.choice(gen_string) res_list.append(temp) return res_list
Офлайн