[Niveau : Débutant]
[Python 3.5]
Bonjour,
j'essaie de m'approprier les bases de Python en me documentant ici et là, mais en réalisant un exercice, j'ai été confronté à un problème qui soulève un problème de compréhension de ma part sur mon propre code. Voici mon programme qui fonctionne :
Avant d'en arriver là, j'avais tenté ce 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 import tkinter as tk import random as rand def affiche_calcul(a,b): return str(a)+"x"+str(b)+"=" def verification(): if eval(zone_de_saisie.get()) == resultat: tk.Label(ma_fenetre, text ="Bien!").place(x = 20, y = 120) else: tk.Label(ma_fenetre, text ="Faux, la réponse est : "+str(resultat)).place(x = 20, y = 120) a = rand.randint(1,10) b = rand.randint(1,10) resultat = a*b ma_fenetre = tk.Tk() ma_fenetre.title("Je vérifie que je connais mes tables") ma_fenetre.geometry("400x600") mon_bouton = tk.Button(ma_fenetre, text = "Vérifier", width = 20, command=verification) affiche_calcul = tk.Label(ma_fenetre, text = affiche_calcul(a,b)) zone_de_saisie = tk.Entry(ma_fenetre) affiche_calcul.place(x = 20, y = 60) zone_de_saisie.place(x = 20, y = 80) mon_bouton.place(x = 20, y = 100) ma_fenetre.mainloop()
La différence c'est que sur la première version, j'ai créé un bouton et une fonction qui est appelée lorsque je clique sur le bouton. Dans la deuxième, j'ai voulu faire sans l'utilisation d'un bouton. Donc j'ai voulu intégrer le corps de la fonction dans le programme principal. Seulement, la valeur mise dans la zone de saisie ne semble jamais être lue par le programme, malgré l'utilisation de la fonction .get().
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 import tkinter as tk import random as rand def affiche_calcul(a,b): return str(a)+"x"+str(b)+"=" a = rand.randint(1,10) b = rand.randint(1,10) resultat = a*b ma_fenetre = tk.Tk() ma_fenetre.title("Je vérifie que je connais mes tables") ma_fenetre.geometry("400x600") affiche_calcul = tk.Label(ma_fenetre, text = affiche_calcul(a,b)) if eval(tk.Entry(ma_fenetre).get()) == resultat: tk.Label(ma_fenetre, text ="Bien!").place(x = 20, y = 120) else: tk.Label(ma_fenetre, text ="Faux, la réponse est : "+str(resultat)).place(x = 20, y = 120) affiche_calcul.place(x = 20, y = 60) zone_de_saisie.place(x = 20, y = 80) ma_fenetre.mainloop()
J'imagine que le problème est événementiel, c'est ce que j'ai cru comprendre en lisant le FAQ, mais je ne parviens pas à l'identifier. Je ne comprends pas ce qu'il se passe (ou ne se passe pas).
Pourriez-vous m'expliquer, si vous voyez le problème?
Merci,
Partager