Générateur de mot de passe python / wxpython

Soyez le premier à donner votre avis sur cette source.

Vue 6 996 fois - Téléchargée 626 fois

Description

Un générateur de mot de passe écrit en Python / wxPython, sans aucune prétention ! Je débute dans wxPython, cette appli fait plutot office d'essais :-)

Source / Exemple :


#!/usr/bin/env python
#-*- coding: ISO-8859-1 -*-

import wx
import os
import sys

class myApp(wx.Frame):
    #__init__:begin
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER ^ wx.MAXIMIZE_BOX)

        icon = wx.Icon(name=os.path.join(sys.path[0],"icon_secure.ico"), type=wx.BITMAP_TYPE_ICO)
        self.SetIcon(icon)

        panel = wx.Panel(self, -1) # voir style=wx.SIMPLE_BORDER ou autre

        ## START content

        MainSizer = wx.BoxSizer(wx.VERTICAL)
        TopBox = wx.BoxSizer(wx.HORIZONTAL)
        InTopBoxRight = wx.BoxSizer(wx.VERTICAL)
        hbox0 = wx.GridBagSizer(5,5)
        hbox1 = wx.BoxSizer(wx.HORIZONTAL)
        hbox2 = wx.BoxSizer(wx.HORIZONTAL)

        Logo = os.path.join(sys.path[0],'icon-main.gif')
        img = wx.Image(Logo, wx.BITMAP_TYPE_ANY)
        sb = wx.StaticBitmap(panel, -1, wx.BitmapFromImage(img))

        TopBox.Add(sb, 0)

        ST_PwLenght = wx.StaticText(panel, -1, "Key lenght")
        self.SC_PwLenght = wx.SpinCtrl(panel, -1, "", size=(60,-1))
        self.SC_PwLenght.SetRange(2,62)
        self.SC_PwLenght.SetValue(8)
        self.CB_Alphanum = wx.CheckBox(panel, -1, "Alphanumeric")
        self.CB_SpecChars = wx.CheckBox(panel, -1, "Special chars")
        self.TC_Result = wx.TextCtrl(panel, -1, "", size=(225, -1), style=wx.TE_READONLY)
        BTN_Generate = wx.Button(panel, -1, "Generate")
        BTN_Generate.Bind(wx.EVT_BUTTON, self.onGenerate)
        ST_Copyright = wx.StaticText(panel, -1, "Copyleft © SViollat 2011")

        self.CB_Alphanum.SetValue(True)

        hbox0.Add(ST_PwLenght, (0,0), (1,1), wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.RIGHT | wx.TOP, 5)
        hbox0.Add(self.SC_PwLenght, (0,1), (1,1), wx.RIGHT | wx.TOP, 5)
        hbox0.Add(self.CB_Alphanum, (0,2), (1,1), wx.ALIGN_CENTER_VERTICAL | wx.RIGHT | wx.TOP, 5)
        hbox0.Add(self.CB_SpecChars, (0,3), (1,1), wx.ALIGN_CENTER_VERTICAL | wx.RIGHT | wx.TOP, 5)
        hbox1.Add(self.TC_Result, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.RIGHT | wx.TOP, 5)
        hbox1.Add(BTN_Generate, 0, wx.RIGHT | wx.TOP, 5)
        hbox2.Add(ST_Copyright, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.RIGHT | wx.TOP | wx.BOTTOM, 5)

        InTopBoxRight.Add(hbox0, 0)
        InTopBoxRight.Add(hbox1, 0)
        InTopBoxRight.Add(hbox2, 0)

        TopBox.Add(InTopBoxRight, 0)

        MainSizer.Add(TopBox, 0)

        ## END content

        panel.SetSizer(MainSizer)

        self.Centre()
        self.Show(True)
        MainSizer.Fit(self)

    def onGenerate(self, event):

        import random

        AlphaNum = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
        All = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890&#{}()|-_^@=$%<>!:;.,?"

        if not self.CB_Alphanum.IsChecked() and not self.CB_SpecChars.IsChecked():
            self.GenerateWarning("PWGen error","Error.\nYou must choose either Alphanumeric and/or Special chars !")
            self.CB_Alphanum.SetValue(True)

        else:
            if self.CB_Alphanum.IsChecked():
                choice = AlphaNum

            if self.CB_SpecChars.IsChecked():
                choice = All

            Lenght = self.SC_PwLenght.GetValue()
            GeneratedPW = ''.join(random.sample(choice, int(Lenght)))
            self.TC_Result.SetValue(GeneratedPW)

    def GenerateWarning(self, titre, content):
        dialog = wx.MessageDialog(None, content, titre, wx.OK | wx.ICON_EXCLAMATION)
        dialog.ShowModal()
        dialog.Destroy()

app = wx.App()
myApp(None, -1, 'PWGen')
app.MainLoop()

Conclusion :


Une version CLI existe également, sujet d'un prochain post :-) Merci de vos retours !!

Codes Sources

A voir également

Ajouter un commentaire

Commentaire

Messages postés
157
Date d'inscription
dimanche 18 avril 2004
Statut
Membre
Dernière intervention
25 juillet 2018
3
Toutes ses lignes pour pas grand choses, je suis pas prêt à me mettre a WXPython TT

Vivement que les GUIs se développe aussi facilement que sous .NET

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.