IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Réaliser des modules à des fins de cryptographie [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    retraité defense
    Inscrit en
    Janvier 2024
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité defense
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2024
    Messages : 30
    Par défaut Réaliser des modules à des fins de cryptographie
    bonjour
    Je suis âgé de 77 ans et me suis mis a Python depuis la mi-novembre
    J'essaie de réaliser des modules a des fins de cryptographie ; mais je rencontre a présent quelque difficultés :
    Je prévois de réaliser :
    - de créer une fenêtre principale avec 2 text-boxes
    - un menu

    de faire un open file ---->dans un texte file c'est fait
    button 1 : pour une fonction remplacer accents par lettres non accentuées
    button 2 : pour une fonction effacer espaces
    Button 3 : pour une fonction Lettres en majuscule
    Sur mon projet -ci-dessous j ai pu mettre en place une ouverture de fichier
    et son affichage dans la 1° text box mais :

    Comment créer une 2de texte box pour le résultat des boutons?

    Comment créer les fonctions liées aux boutons qui modifier le texte de la 1ere box et l'afficher dans la seconde text box?

    Comment mieux dispose les boutons buttons ?
    _____________________________________________
    ----------------------------------- source
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    from tkinter import *
    from tkinter import filedialog
     
    # functions
    def openFile():
    tf = filedialog.askopenfilename(
    initialdir="C:/Users/MainFrame/Desktop/",
    title="Open Text file",
    filetypes=(("Text Files", "*.txt"),)
    )
    pathh.insert(END, tf)
    tf = open(tf)
    file_cont = tf.read()
    txtarea.insert(END, file_cont)
     
    tf.close()
     
    def saveFile():
    tf = filedialog.asksaveasfile(
    mode='w',
     
    title ="Save file",
    defaultextension=".txt"
    )
    tf.config(mode='w')
     
    pathh.insert(END, tf)
    data = str(txtarea.get(1.0, END))
    tf.write(data)
     
    tf.close()
     
    ws = Tk() # --------------- fenetre ppale
    ws.title("Python Crypto") # nom du script
    ws.geometry("800x900") # taille box
    ws['bg']='#0C296B' # color hexa
     
    # ----------------------------------ajout cadre
    frame = Frame(ws)
    frame.pack(pady=20)
     
    # __________________________________ajout scrollbars
    ver_sb = Scrollbar(frame, orient=VERTICAL )
    ver_sb.pack(side=RIGHT, fill=BOTH)
     
    hor_sb = Scrollbar(frame, orient=HORIZONTAL)
    hor_sb.pack(side=BOTTOM, fill=BOTH)
     
    #------------------------------ ajout espace texte
    txtarea = Text(frame, width=40, height=20)
    txtarea.pack(side=LEFT)
     
    # ----------------------- binding scrollbar with text area
    txtarea.config(yscrollcommand=ver_sb.set)
    ver_sb.config(command=txtarea.yview)
     
    txtarea.config(xscrollcommand=hor_sb.set)
    hor_sb.config(command=txtarea.xview)
     
    # adding path showing box affiche path
    pathh = Entry(ws)
    pathh.pack(expand=True, fill=X, padx=10)
     
    # --------------- creation boutons-----------------
    Button(
    ws,
    text="Open File",
    command=openFile
    ).pack(side=LEFT, expand=True, fill=X, padx=20)
     
    Button(
    ws,
    text="Save File",
    command=saveFile
    ).pack(side=LEFT, expand=True, fill=X, padx=20)
     
    Button(
    ws,
    text="Exit",
    command=lambda:ws.destroy()
    ).pack(side=LEFT, expand=True, fill=X, padx=20)
     
    Button(
    ws,
    text="No accents",
    command=lambda:ws.destroy()
    ).pack(side=LEFT, expand=True, fill=X, padx=20)
     
    Button(
    ws,
    text="Majuscules",
    command=lambda:ws.destroy()
    ).pack(side=LEFT, expand=True, fill=X, padx=20)
     
    Button(
    ws,
    text="sans espaces",
    command=lambda:ws.destroy()
    ).pack(side=LEFT, expand=True, fill=X, padx=20)
     
     
     
    ws.mainloop()

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par RAMEX Voir le message
    Je suis âgé de 77 ans et me suis mis a Python depuis la mi-novembre
    Joli !

    Citation Envoyé par RAMEX Voir le message
    J'essaie de réaliser des modules a des fins de cryptographie
    Pour le plaisir uniquement, car ces modules existent déjà (ex cryptodome) ou même VeraCrypt (logiciel gratuit permettant de créer un disque chiffré se comportant comme une clef USB => on l'ouvre ce qui lui donne une lettre, on copie ce qu'on veut dedans comme on copie sur une clef USB ce qui a pour effet de chiffrer les documents copiés et on le referme ce qui supprime la lettre et le volume totalement chiffré contient les documents qui y ont été copiés)

    Citation Envoyé par RAMEX Voir le message
    Je prévois de réaliser :
    - de créer une fenêtre principale avec 2 text-boxes
    - un menu
    Le rapport avec la crypto ? Il ne faut pas mélanger "travail" et "IHM permettant de lancer le travail". C'est même tellement vrai que généralement on utilise une technologie de développement appelée "MVC" (Modèle, Vue, Contrôleur)
    • Le Modèle c'est tout ce qui a trait au stockage permanent des données (fichier, base de données, ...)
    • La Vue c'est tout ce qui a trait à la saisie/affichage des données (input/print, GUI/IHM, ...)
    • Le Contrôleur c'est tout ce qui a trait au calcul des données (créer la donnée C à partir des données A et B)

    Ainsi en séparant les technologies on peut facilement changer (passer de fichier à bdd, passer de input à IHM, etc).

    Donc je te suggère de faire de même. Tu veux faire de la crypto, commence par créer tes outils de crypto. Tu parles de fichier donc je présume que tu veux chiffrer un fichier ben écris la fonction qui fait le travail (elle prend ficA et sort ficB).
    Une fois que les outils seront faits (et testés), là tu pourras coder l'IHM permettant de les appeler. Tu gagneras en mobilité et en indépendance (si demain le chiffrement change, tu ne changes que la fonction). Le reste ce ne sont que des ajustements (comment aligner deux boutons etc => gestionnaire de disposition)

    Et pour qu'un code soit lisible il faut le mettre entre balises (cf les règles) parce que là, tu dois bien te douter que ton truc est irrécupérable.
    [edit] le code a été mis en page, probablement par un modo, mais soit il a été mal copié, soit il est faux, car il n'y a aucune tabulation
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Citation Envoyé par RAMEX Voir le message
    Comment créer une 2de texte box pour le résultat des boutons?
    Peut être en affichant le 2ème widget Text à côté du premier? Ou peut être avec un notebook pour avoir des sortes de pages et un widget Text par page?

    Déjà il faut savoir quelle sera la présentation qu'on veut avoir à l'écran et savoir utiliser les widgets qui vont permettre de la réaliser.

    Côté widgets, vous avez un tour de ce qu'on peut faire surtkdocs...

    Citation Envoyé par RAMEX Voir le message
    Comment créer les fonctions liées aux boutons qui modifier le texte de la 1ere box et l'afficher dans la seconde text box?
    récupérer le contenu d'un widget Text, le transformer puis l'afficher dans un 2nd widget Text.
    Dans votre code vous n'avez pas encore crée le 2nd widget Text mais côté instructions à exécuter dans ces fonctions, vous les utilisez déjà.

    Citation Envoyé par RAMEX Voir le message
    Comment mieux dispose les boutons buttons ?
    "mieux" ? Toujours pareil: soit ce qu'on voit à l'écran correspond a ce que vous avez envisagé soit il faut définir ce qu'on veut.

    Côté TK, c'est pas compliqué. On a plusieurs gestionnaires d'écran pour agencer des widgets dans le rectangle délimité par le widget parent.
    On ne peut utiliser qu'un gestionnaire d'écran par widget parent.

    Et avec ces briques de base là, il faut programmer pour réaliser ce qu'on veut (si c'est possible).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 228
    Par défaut
    Hello,
    voici un exemple avec deux composants Text avec barres de navigation qui utilise une mise en page tkinter de type grille. La fonction unidecode utilisée dans le code du bouton No accents permet d'enlever les accents.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     import tkinter as tkfrom tkinter import filedialog
    from unidecode import unidecode
     
    root = tk.Tk()
    root.title("Python Crypto") # nom du script
    #root.geometry("700x550") # taille box
    root['bg']='#0C296B' # color hexa
     
    # functions
    def openFile():
        tf = filedialog.askopenfilename(
        initialdir="C:/Users/MainFrame/Desktop/",
        title="Open Text file",
        filetypes=(("Text Files", "*.txt"),))
        pathh.insert(tk.END, tf)
        tf = open(tf,mode="r", encoding="utf-8")
        file_cont = tf.read()
        template1.insert(tk.END, file_cont)
        tf.close()
     
    def saveFile():
        tf = filedialog.asksaveasfile(
        mode='w',
        title ="Save file",
        defaultextension=".txt")
        tf.config(mode='w')
        pathh.insert(tk.END, tf)
        data = str(template1.get(1.0, tk.END))
        tf.write(data) 
        tf.close()
     
    def sansAccent():
        template2.insert(tk.END,unidecode(template1.get("1.0",'end-1c')))
     
    def viewall(*args):
        template1.xview(*args)
        template2.xview(*args)
     
    xscrollbar = tk.Scrollbar(root, orient=tk.HORIZONTAL)
    xscrollbar.grid(row=1, columnspan=4, sticky=tk.N + tk.S + tk.E + tk.W)
    xscrollbar.config(command=viewall)
     
    S1 = tk.Scrollbar(root)
    S1.grid(row=0, column=1,pady=1, sticky=tk.N + tk.S + tk.E + tk.W)
    template1 = tk.Text(root, height=20, width=40, bg='bisque', xscrollcommand = xscrollbar.set, yscrollcommand=S1.set)
    template1.grid(row=0, column=0,padx=1,pady=1)
    #template1.insert(tk.END, file1data)
    S1.config(command=template1.yview)
     
     
    S2 = tk.Scrollbar(root)
    S2.grid(row=0, column=3,pady= 1, sticky=tk.N + tk.S + tk.E + tk.W)
    template2 = tk.Text(root, height=20, width=40, bg='bisque', xscrollcommand = xscrollbar.set,yscrollcommand=S2.set)
    template2.grid(row=0, column=2, padx=1, pady=1)
    #template2.insert(tk.END, file1data)
    S2.config(command=template2.yview)
     
     
    # adding path showing box affiche path
    pathh = tk.Entry(root)
    pathh.grid(row=2, columnspan=3, padx=10, pady = 10, sticky = tk.W + tk.E)
     
    # --------------- creation boutons-----------------
    tk.Button(root, text="Open File",
    command=openFile
    ).grid(row=3,column = 0, padx=100, pady = 10, sticky = tk.W + tk.E)
     
    tk.Button(root,text="Save File",
    command=saveFile
    ).grid(row=4,column = 0, padx=100, pady = 10, sticky = tk.W + tk.E)
     
    tk.Button(root,text="Exit",
    command=lambda:ws.destroy()
    ).grid(row=5,column = 0, padx=100, pady = 10, sticky = tk.W + tk.E)
     
    tk.Button(root,text="No accents",
    command=sansAccent
    ).grid(row=3,column = 2, padx=100, pady = 10, sticky = tk.W + tk.E)
     
    tk.Button(root,text="Majuscules",
    command=lambda:ws.destroy()
    ).grid(row=4,column = 2, padx=100, pady = 10, sticky = tk.W + tk.E)
     
    tk.Button(root,text="sans espaces",
    command=lambda:ws.destroy()
    ).grid(row=5,column = 2, padx=100, pady = 10, sticky = tk.W + tk.E)
     
    tk.mainloop()
    A noter que dans l'exemple le scroll horizontal ne sert à rien car le texte est coupé (Wrap).

    Nom : TraitementText.gif
Affichages : 193
Taille : 222,0 Ko

    Ami calmant, J.P

  5. #5
    Membre actif
    Homme Profil pro
    retraité defense
    Inscrit en
    Janvier 2024
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité defense
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2024
    Messages : 30
    Par défaut aide Papy
    Je vous remercie de vos réponses mais elles ne me font pas avancer mis a part Jurassic Pork .
    Je ne vous ai pas précise que je me suis lancé ce défi a titre purement de loisir;
    Je n'ai pas l'ambition de révolutionner la cryptographie , mais je sais avec précision ce a quoi je veux aboutir.
    En reprenant l'image , je suis comme un papy qui veut de l'aide pour traverser la route ;
    Je n'ai pas besoin de conseils sur
    ' pourquoi vous voulez traverser "
    ' prenez la taxi"
    "faites du stop"
    juste avancer....
    A titre Info , je suis informaticien depuis le début des 80 et a la retraite depuis 10 ans ( cobol -dps8 etc)
    J'ai appris bcp de langages ( pas toujours ceux que j'aurais souhaité) on ne fait pas toujours ce que l'on veut-
    Bref malgré cela , Python connais pas -
    En tout cas je remercie Jurassic Pork qui m'a montré un chemin
    A+

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par RAMEX Voir le message
    Je n'ai pas besoin de conseils sur
    ' pourquoi vous voulez traverser "
    ' prenez la taxi"
    "faites du stop"
    juste avancer....
    Je ne pense pas que ce soit ce qu'on a dit.

    Citation Envoyé par RAMEX Voir le message
    En tout cas je remercie Jurassic Pork qui m'a montré un chemin
    Ok, de rien !!!
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Bonjour,

    Vous avez commencé un développement en python... ce qui indique que vous avez recherché les informations pour vous amener à un code testable.

    Vous aviez aussi dit "prévoir réaliser plusieurs fonctionnalités", ce qui n'indique pas que vous attendiez un code tout cuit dans le bec, mais plutôt une manière de vous guider pour continuer votre apprentissage.

    Et dernière information, vous avez eu une maîtrise de Cobol, souvenez vous, vous avez été débutant en Cobol comme en python aujourd'hui... Avec en plus maintenant une source infinie d'informations sur le web, y compris une des meilleures documentations tous langages confondus sur son site officiel.

    Je trouve dommageable de reprocher à d'autres membres de vous aider... parce-que dans toutes aides apporter, même si l'objectif n'est pas atteint, certaines informations restent utiles.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Détecter des fins de séries
    Par kamkam33 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/09/2010, 18h42
  2. Réponses: 0
    Dernier message: 04/05/2010, 16h41
  3. RUBY Suppression des fins de lignes
    Par best94 dans le forum Ruby
    Réponses: 3
    Dernier message: 14/01/2009, 10h44
  4. Installer plusieurs versions des navigateurs à des fins de test
    Par komoku dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 20/12/2006, 14h47
  5. Questionnaire Delphi à des fins d'embauche.
    Par Arrown dans le forum Delphi
    Réponses: 7
    Dernier message: 31/03/2006, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo