Bonjour, je débute complétement avec Tkinter depuis ce matin, j'ai voulu créer un programme qui affiche les notes de musiques de différentes gammes.
Le programme semble fonctionner (sauf que je n'ai pas programmer toutes les gammes) mais il affiche une nouvelle frame chaque fois que je sélectionne une note plutôt que de remplacer la précédente. Ma fenêtre s'agrandit donc chaque fois que je clique...

Mes recherches m'ont emmené à penser qu'il faut que j'ajoute une fonction permettant d'effacer la frame, frame.destroy() ou frame.forget(). Malheureusement je ne trouve pas de place idéale pour les placer sans créer un conflit d'assignement.

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
 from tkinter import *
from tkinter import ttk
 
fenetre = Tk()
Notesfr = ["Do","Do#","Ré","Ré#","Mi","Fa","Fa#","Sol","Sol#","La","La#","Si"]
Gammes=["Chromatique","Majeure","Mineure","Pentatonique Mineure","Pentatonique Majeure"]
Intervalles = ["Tonique","Seconde mineure","Seconde majeure","Tierce mineure","Tierce majeure","Quarte juste","Quinte diminuée","Quinte juste","Sixte mineure","Sixte majeure","Septième mineure","Septième majeure","Octave"]
Choix_note = IntVar()
Choix_note.set(0)
Choix_gamme = IntVar()
Choix_gamme.set(0)
Texte = StringVar()
 
def ShowChoice():
 
    Frame3 = Frame(fenetre, borderwidth=2, relief=GROOVE)
    Frame3.pack(side=LEFT, padx=10, pady=10)
    c=0
    index_notesfr=Choix_note.get()
    while (c<11):
        LabelResultat=Label(Frame3, text= str (Intervalles[c]) + ' : '+ str (Notesfr[index_notesfr]))
        LabelResultat.pack(padx = 5, pady = 5)
        index_notesfr=index_notesfr+1
        c=c+1
        if (index_notesfr>11):
            index_notesfr=0
 
 
# frame 1
Frame1 = Frame(fenetre, borderwidth=2, relief=GROOVE)
Frame1.pack(side=LEFT, padx=10, pady=10)
 
# frame 2
Frame2 = Frame(fenetre, borderwidth=2, relief=GROOVE)
Frame2.pack(side=LEFT, padx=10, pady=10)
 
 
# Ajout de labels titre
Label(Frame1, text="Tonique").pack(padx=10, pady=10)
Label(Frame2, text="Gamme").pack(padx=10, pady=10)
 
 
# Ajout des labels des notes de musiques
for val in range (len(Notesfr)):
    Radiobutton(Frame1, 
                  text=Notesfr[val],
                  indicatoron = 0,
                  width = 5,
                  padx = 20, 
                  variable=Choix_note, 
                  command=ShowChoice,
                  value=val).pack(anchor=W)
 
# Ajout des labels des gammes  
for val in range (len(Gammes)):
    Radiobutton(Frame2, 
                  text=Gammes[val],
                  indicatoron = 0,
                  width = 11,
                  padx = 20, 
                  variable=Choix_gamme, 
                  command=ShowChoice,
                  value=val).pack(anchor=W)
 
ShowChoice()
 
 
fenetre['bg']='white'
 
 
fenetre.mainloop()
Merci d'avance aux personnes qui pourront m'aider!