Bonsoir à tous,
Voilà programmeur du dimanche, j'avais fais un programme en Perl qui fait un test de calcul mentale. Le programme marche bien, mais il est en ligne de commande. Du coup Perl/Tk à la rescousse me voilà à faire l'interface graphique.
Le code étant assez long, je le hiérarchise comme ça :
[création de la fenêtre principale]
[création d'une Label dynamique pour afficher les opérations]
[création d'une Entry] [bouton valider] [status = pts du joueur]
On a donc à l'affichage d'une opération, je souhaite récupérer les données d'Entry, (valider par le bouton) et je regarde donc si la réponse est bonne.
Mon soucis est que le programme n'attend pas que le joueur clique sur le bouton et continue son exécution.
J'ai bien tenté avec un "while" ..mais cela provoque une boucle infinie et fais flamber mon ordi.
bref, apres ce semblant d'explication un peu de code (tention c'est long):
Donc si vous comprenez un peu le fonctionnement, maintenant mon soucis c'est que le programme attende que l'utilisateur clique sur "valider" pour récupérer l'Entry et faire la vérification entre la réponse du jouer et la réponse Attendu
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 #---------------------------Fonction-----------------------# # Fonction testGo # Rôle : se charge de poser la question en fonction du signe # ARGS : 1er chiffre / 2eme chiffre / Signe / points # Return : le point attribué ou non. sub testGo { my ($first,$second,$sign,$pts)= @_ ; my ($answerT,$answerF) = 0 ; if ($sign == 0) {# addition $labelGame->configure(-text => "Que fais ".$first." + ".$second." = ?\n"); $answerT = "".$first + $second; } elsif ($sign == 1) {# soustraction $labelGame->configure(-text => "Que fais ".$first." - ".$second." = ?\n"); $answerT = "".$first - $second; } elsif ($sign == 2) {# multiplication $labelGame->configure(-text => "Que fais ".$first." x ".$second." = ?\n"); $answerT = "".$first * $second; } elsif ($sign == 3) {# Division if ($second >= $first) { $first++;$statGame->configure(-text => $pts); $statGame->update(); $labelGame->configure(-text => "Que fais ".$second." / ".$first." = ? (chiffre arrondi à l\'unité)\n"); $answerT = "".int($second / $first); } else { $second ++; $labelGame->configure(-text => "Que fais ".$first." / ".$second." = ?\n"); $answerT = "".int($first / $second); } } else { print "erreur"; exit(1);} $labelGame->update; $answerF = $userEntry->get; #récupération d'Entry principal $textEntry->delete(0,5); # on efface l'Entry pour l'utilisation suivante $pts++ if($answerF eq $answerT); print "la réponse était :".$answerT."\n" if($answerF ne $answerT); return $pts; }
Partager