Bonsoir,

Je suis débutant Python, j'ai décidé de commencer par le module tkinter.

Malgré plusieurs jours de recherche, je n'ai pas trouvé le moyen de faire fonctionner la fenêtre fille en intégrant son code dans celui de la fenêtre principale.

Pourriez vous m'aider à franchir ce palier svp ?

MON CODE SIMPLIFIE DE LA FENETRE PRINCIPALE


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
 
 
from tkinter import *
from tkinter.messagebox import * # Appel du sous-module boîtes de messages showinfo
 
 
###def FenToplevel(): # Fonction  de l'appel command=du même nom
 
    ###???????????????
 
 
Feneprin = Tk()
w, h = Feneprin.winfo_screenwidth(), Feneprin.winfo_screenheight()
Feneprin.geometry("%dx%d+0+0" % (w-15, h))
Feneprin.title('Titre du Programme')
Feneprin['bg']='white' # couleur de fond
 
 
Button(Feneprin,text="Ouvrir la fentre liste", command=FenToplevel).grid()
 
 
Feneprin.mainloop()
LE CODE DE LA FENETRE FILLE que je cherche à intégrer dans le précédent

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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
 
from tkinter import *
from tkinter.messagebox import * # Appel du sous-module boîtes de messages showinfo
 
######################################
######### Commandes du Menu ##########
######################################
 
def Enregistrer(): # Fonction  de l'appel command=du même nom
    showinfo("Confirmation", "Commande Enregistrer OK!") #test fonction avec une boite message info
 
def Enregistrersous(): # Fonction  de l'appel command=du même nom
    showinfo("Confirmation", "Commande Enregistrer sous OK!")    #test fonction avec une boite message info
 
def Apropos(): # Fonction  de l'appel command=du même nom
    #nb=len(LisNom)  #test fonction avec une boite message info
    showinfo("A PROPOS", "Gestion de liste simple, coding: utf-8, D A-B, 12/03/2015")    #test fonction avec une boite message info
 
def TrilistAZ(): ##### TRI LA LISTE DE CROISSANT
    temp_list = list(LisNom.get(0, END))#Liste temporaire = Liste
    temp_list.sort(key=str.lower)#tri dans l'ordre alphabétique
    LisNom.delete(0, END)#Efface la liste"
    for item in temp_list:#prend toutes les valeurs de la liste temporaire
        LisNom.insert(END, item)#copie dans la liste en partant de la fin
 
def TrilistZA(): ##### TRI LA LISTE DECROISSANT
    temp_list = list(LisNom.get(0, END))#Liste temporaire = Liste
    temp_list.sort(key=str.lower)#Ordonne la liste temporaire
    LisNom.delete(0, END)#Efface la liste"
    for item in temp_list:#prend toutes les valeurs de la liste temporaire
        LisNom.insert(0, item)#copie dans la liste en partant du début
 
def DelListe():##### EFFACE LA LISTE
    LisNom.delete(0, END)#Efface toutes les valeurs de la Liste
 
##########################################
###         COMMANDES FONCTIONS        ###
##########################################    
 
def addEntry () : ##### AJOUTE À LA LISTE LA VARIABLE SAISIE DANS LE CHAMP ENTRÉE
    LisNom.insert(0, ChpNom.get())#colle la variable entrée au début de la liste 
    VarNom.set("")#vide la variable entrée 
 
def DelIndex(): ##### EFFACE LA SÉLECTION EN COURS DANS LA LISTE
    try:
        index = LisNom.curselection()#calcule l'index de la selection en cours dans la liste
        LisNom.delete(index)#supprime la sélection correspondante
    except IndexError:
           pass
 
def Modifier(): ##### DÉPLACE LA SÉLECTION EN COURS DANS LA LISTE VERS SAISIE DANS LE CHAMP ENTRÉE
    index = LisNom.curselection() #calcule l'index de la selection en cours dans la liste
    ChpModif = LisNom.get(index) #affecte un nom à l'index correspondant
    ChpNom.delete(0, 100) #supprime tous les cractères du Champ de saisie"
    ChpNom.insert(0, ChpModif)#copie la variable correspondante dans 
    DelIndex() #efface la variable de la liste        
 
##########################################
###       MISE EN PAGE PRNCIPALE       ###
##########################################
 
W1 = Tk() #Fenêtre principale
W1.title('LISTE DES PARTICIPANTS') #Titre 
W1['bg']="#fcfcdc"  # Couleur de fond
Zon1W1 = Frame(W1) #Zone1 de mise en page 
Zon1W1.pack() #type de mise page zone1
 
##################################
######### Barre de Menu ##########
##################################
 
menubar = Menu(W1)
W1.config(menu=menubar)
 
menu1 = Menu(menubar, tearoff=0)
#menu1.add_command(label="Enregistrer", command=Enregistrer)
#menu1.add_command(label="Enregistrer sous", command=Enregistrersous)
menu1.add_separator()
menu1.add_command(label="Quitter", command=W1.quit)
menubar.add_cascade(label="Sauvegarder", menu=menu1)
 
menu2 = Menu(menubar, tearoff=0)
menu2.add_command(label="Vider la liste", command=DelListe)
menu2.add_command(label="Trier ordre croissant", command=TrilistAZ)
menu2.add_command(label="Trier ordre décroissant", command=TrilistZA)
menubar.add_cascade(label="Organiser", menu=menu2)
 
menu3 = Menu(menubar, tearoff=0)
menu3.add_command(label="A propos", command=Apropos)
menubar.add_cascade(label="Aide", menu=menu3)
 
##########################################
###           CDES FONCTIONS           ###
##########################################
 
TitChpNom = Label(Zon1W1, text = 'Nom : ', anchor= E, width=20) # Titre du champ de saisie NOM
VarNom= StringVar() # Variable saisie de type texte
ChpNom = Entry(Zon1W1, textvariable= VarNom, width=70, bg ='#fbfbec', fg='blue')# Champ de saisie Evènement
b1 = Button(Zon1W1,text="Ajouter à la liste", command=addEntry)
b2 = Button(Zon1W1,text="Supprimer la sélection",command=DelIndex)
b3 = Button(Zon1W1,text="Modifier la sélection",command=Modifier)
ScrListNom = Scrollbar(Zon1W1) #Barre de défilement liste
ScrListNom.grid(column=2,row=3,sticky= 'WNS') #Position barre de défilement
LisNom = Listbox(Zon1W1, yscrollcommand=ScrListNom.set, width=70, bg ='#fbfbec', fg='blue', height=10)# Liste
LisNom.grid(column=1,row=3,sticky= 'W') # Position de la liste
ScrListNom.config(command=LisNom.yview) # Barre de défilement liste verticale
 
##########################################
###    MISE EN PAGE CDES FONCTIONS     ###
##########################################
 
Spa1 = Label(Zon1W1).grid(row=0) #Espace1 saut de ligne
Spa2 = Label(Zon1W1).grid(row=2) #Espace2 saut de ligne
Spa3 = Label(Zon1W1).grid(row=5) #Espace2 saut de ligne
TitChpNom.grid(column=0,row=1) #Position du Label
ChpNom.grid(column=1,row=1,sticky= 'W',columnspan=3) #Position du champ de saisie
b1.grid(column=2,row=1,padx= 20, sticky= 'W') # Position bouton
b2.grid(column=1,row=4,sticky= 'E') # Position bouton
b3.grid(column=1,row=4,sticky= 'W') # Position bouton
 
W1.mainloop()