Bonjour, je travaille sur python pour un projet scolaire et, étant débutante, je ne sais pas comment me débloquer.
Je m'explique, je dois créer une page d'accueil qui ouvre sur deux jeux. Une fois le jeu choisi, l'utilisateur doit choisir son nom dans une liste (j'utilise listbox) et, si son nom n'y est pas, il doit entrer son nom dans une barre de texte et, en cliquant sur entrée, son nom sera automatiquement ajouté à la listbox. J'ai essayé d'utiliser stringvar mais je n'arrive pas récupérer le nom entré dans la barre de texte. Avez-vous des idées ?

Parallèlement à ça, je dois enregistrer les utilisateurs et les scores sur un fichier texte. J'avais pensé utiliser le dictionnaire mais, d'après mes recherches, il faut utiliser pickle ou json. Mon professeur n'étant pas trop d'accord, est-il possible de faire sans ? Est-ce qu'enregistrer les utilisateurs et les meilleurs scores sans passer par le dictionnaire pourrait être possible ?

Je vous mets mon programme, n'hésitez pas à me dire si il y a des soucis ou incohérences !

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
122
123
124
125
126
127
import tkinter as tk
 
#nom du dictionnaire qui enregistrera les futurs meilleurs scores
meilleur_score = { "Axelle": 4, "Manon": 3 }
#pour modifier le texte dans le fichier : meilleurscore.write(texte à rentrer)
 
 
#ouverture du fichier dans lequel sont engeristrés les utilisateurs et leur meilleur score
meilleurscore= open('fichierordi1', 'a')
 
def ajout_utilisateur_listbox():
    page_listbox=tk.Tk()
    page_listbox.geometry("400x200")
    Lb_utilisateurs= tk.Listbox(page_listbox)
    Lb_utilisateurs.pack()
        #longueur= Lb_utilisateurs.size()
    page_listbox.mainloop()
    page_listbox=tk.Toplevel()
 
#définition de la 1ère page, qui ouvre le jeu "Apprendre"
def page1():
 
    fenetre1=tk.Tk()
    fenetre1.title("Apprendre")
#couleur de fenêtre
    fenetre1.config(bg = "#E6E0F8")
#taille de fenetre
    fenetre1.geometry("1200x900")
    # Message de bienvenue
    message1 = tk.Label(fenetre1, text = "Bienvenue dans l'oreille absolue")
    message1.config(font = ('Times', 30, 'bold italic'), fg = 'black', bg= "#E6E0F8")
    message1.pack(pady=10)
 
#règles du jeu A modifier
    message2 = tk.Label(fenetre1, text = "Règles du jeu")
    message2.config(font = ('Times', 30, 'bold italic'), fg = 'black', bg= "#E6E0F8")
    message2.pack(pady=10)
 
    bouton6 = tk.Button (fenetre1, text = "retour", width = 20, height = 3,command=lambda:fenetre1.destroy())
    bouton6.pack()
    bouton6.place(x=455,y=450)
 
    bouton_ancienutilisateur= tk.Button(fenetre1, text= "J'ai déja joué !", width = 20, height = 3)
    bouton_ancienutilisateur.pack()
    bouton_ancienutilisateur.place(x=455, y=330)
#A partir d'ici, on crée un label qui permet de rentrer son nom en tant qu'utilisateur
 
    #ici, on définit le nom de l'utilisateur en tant que variable
    nouvelutilisateur= tk.StringVar()
 
    #création d'un label qui permet d'écrire son nom
    labeldutexte= tk.Label(fenetre1, text="Entrez votre nom: ")
    labeldutexte.pack()
 
    nom_utilisateur= tk.Entry(fenetre1, textvariable=nouvelutilisateur)
    nom_utilisateur.focus_set()
    nom_utilisateur=nom_d_utilisateur.get
    nom_utilisateur.pack()
 
 
 
    #création du bouton "entrer", très important, qui permet de valider le texte
    bouton_entrer = tk.Button(fenetre1, text= "Entrer", width = 20, height = 3)
    bouton_entrer.place(x=500, y=200)
    bouton_entrer.pack()     
    bouton_nouvelutilisateur= tk.Button(fenetre1, text="Nouvel utilisateur", width = 20, height = 3)
    bouton_nouvelutilisateur.pack()
    bouton_nouvelutilisateur.place(x=455, y=400)
 
 
#définition de la 2ème page, qui ouvre le jeu "Se tester"    
def page2():
    fenetre2=tk.Tk()
    # En utilisant l’instruction « from tkinter import * », on peut appeler les éléments du module directement.
    fenetre2.title("Se tester")
 
#couleur de fenêtre
    fenetre2.config(bg = "#E6E0F8")
#taille de fenetre
    fenetre2.geometry("1200x900")
 
# Message de bienvenue
    message3 = tk.Label(fenetre2, text = "Bienvenue dans l'oreille absolue !")
    message3.config(font = ('Times', 30, 'bold italic'), fg = 'black', bg= "#E6E0F8")
    message3.pack(pady=10)
 
#règles du jeu A modifier
    message4 = tk.Label(fenetre2, text = "Règles du jeu")
    message4.config(font = ('Times', 30, 'bold italic'), fg = 'black', bg= "#E6E0F8")
    message4.pack(pady=10)
 
    bouton7 = tk.Button (fenetre2, text = "retour", width = 20, height = 3,command=lambda:fenetre2.destroy())
    bouton7.pack()
    bouton7.place(x=455,y=330)
 
# Création d'une fenêtre principale avec Tk :
fenetre=tk.Tk()
 
# Titre de la fenêtre
fenetre.title("Jeu avec Ax")
 
#couleur de fenêtre
fenetre.config(bg = "#E6E0F8")
 
#taille de fenetre
fenetre.geometry("1200x900")
 
# Ajout d'un bouton dans la fenêtre pour commencer une nouvelle partie (en tant que nouvel utilisateur):
bouton3 = tk.Button (fenetre, text = "Apprendre", width = 20, height = 3,command=lambda:[page1(), ajout_utilisateur_listbox()])
bouton3.pack()
bouton3.place(x=455,y=250)
 
#Ajout d'un bouton pour reprendre une ancienne partie 
bouton4 = tk.Button (fenetre, text = "Se tester", width = 20, height = 3,command=lambda:page2())
bouton4.pack()
bouton4.place(x=455,y=330)
 
def processQuit():
    fenetre.destroy()
 
 
bouton5= tk.Button(fenetre, text = 'Quitter', width = 20, height = 3, command=processQuit)
bouton5.pack()
bouton5.place(x=455,y=410)
 
# Affichage de la fenêtre créée :
fenetre.mainloop()