Bonjour,
je réalise actuellement l'interface graphique d'un programme qui permet de cacher du texte dans une image (stéganographie). Il existe également un programme permettant de faire l'opération inverse c'est à dire décrypter une image dans laquelle du tetxe est caché.
J'ai ainsi choisie de créer une fenêtre principale dans laquelle il y a deux boutons : un permettant d'accéder à la fenêtre pour crypter une image et un autre permettant d'accéder à la fenêtre pour décrypter une image. J'ai donc rentrer les deux fenêtres (crypter et décrypter) dans deux fonctions différentes. Le problème c'est que vous devinez que ces deux fonctions appellent d'autres fonctions qui permettent de réaliser le but du programme. Et ça Tkinter n'aime pas (les fonctions de fonctions), j'ai toujours des messages d'erreurs. J'ai essayer de mettre des lambda dans les commandes de mes fenêtre ou encore de mettre des global mais ça ne marche toujours pas ... J'aimerais avoir de l'aide. Merci
J'ai demandé à beaucoup de personnes qui n'ont jamais eu la réponse.

Voici un extrait de mon code :
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
from tkinter import *
import random
from PIL import Image, ImageTk
 
 
def fenetre_crypter():
    fenetre.destroy()
    fenetre1 = Tk()
    fenetre1.geometry('1000x500')
 
    #Clé
    clé = Label(fenetre1, text="Clé :").place(x=600,y=20)
    ligne_cle = Entry(fenetre1, width=21).place(x=640,y=20)
    bouton_aléatoire = Button(fenetre1, text="Aléatoire", command=genCleCode).place(x=785,y=16)
 
    #Texte
    indication = Label(fenetre1, text="Saisissez votre texte :").place(x=20,y=10)
    zone_texte=Text(fenetre1, width=60, height=26).place(x=20, y=30)
 
    #Bouton
    bouton_enregistrerimage = Button(fenetre1, text="Enregistrer l'image obtenue", command=sauvegarder).place(x=450,y=470)
 
    #Image
    photo = Image.open("image.jpg")
    photo.thumbnail((475,475), Image.BICUBIC)
    image = ImageTk.PhotoImage(photo)
    canvas = Canvas(fenetre1).place(x=485,y=95)
    canvas.config(height=image.height(),width=image.width())
    Button(fenetre1,text="Générer l'image",command=lambda : affiche(image, canvas)).place(x=700, y=50)    
 
    return
 
 
def genCleCode(ligne_cle):
    cleCode = ""
    ligne_cle.delete(0,20) 
    for i in range(0,19,1):
        if i == 4 or i == 9 or i==14 :
            cleCode += "-"
        else:
            choixDuCaractere = random.randint(0,2)
            caractere = [random.randint(48,57),random.randint(65,90),random.randint(97,122)]
            cleCode += chr(caractere[choixDuCaractere])
    ligne_cle.insert("insert", cleCode) 
    return cleCode
 
def affiche(i,canvas):
    canvas.create_image(0,0,anchor=NW,image=i)
    return
 
fenetre = Tk()
fenetre.geometry('1000x500')
 
 
bouton_coder = Button(fenetre, text="Cacher un texte dans une image", command=fenetre_crypter,font=("Arial", 15)).place(x=350, y=150)
bouton_decoder = Button(fenetre, text="Décoder une image", command=fenetre_décoder,font=("Arial", 15)).place(x=410, y=220)
bouton_quitter = Button(fenetre, text="Quitter", command=fenetre.destroy,font=("Arial", 15)).place(x=920, y=453)
 
fenetre.mainloop()
PS : Lorsque j'éxécute seulement la fenêtre pour crypter (quand celle ci n'est pas une fonction), le programme marche très bien (affichage d'image ...)