Comment récuper un NOMBRE demandé a l'utilisateur avec Tkinter

nanadu387 2 Messages postés mercredi 3 janvier 2018Date d'inscription 5 janvier 2018 Dernière intervention - 3 janv. 2018 à 18:03 - Dernière réponse : nanadu387 2 Messages postés mercredi 3 janvier 2018Date d'inscription 5 janvier 2018 Dernière intervention
- 5 janv. 2018 à 17:57
Bonjour,
J'ai besoin de récuper une valeur entrer par l'utilisateur avec un widgets Tkinter, j'arrive à l'afficher avec un print dans une fonction, mais pas à la récupere pour mon programme global, où j'ai besoin de faire des calculs avec ce nombre.
Voici mon programme ( avec python 2 )
Celui la ne m'affiche que v , et pas a.

from Tkinter import *

def get_entry(event):
global v
v = float(truc.get())
print(v)

root = Tk()

truc = Entry(root, width=30)
truc.pack()
root.bind('<Return>', get_entry)

root.mainloop()
global v
a = v+5
print (a)

Qu'est ce qui ne marche pas ? comment faire ? HELP !
Afficher la suite 

2 réponses

Répondre au sujet
0
Utile
1
Bonjour,

1ère chose, utilise les balises codes lorsque tu postes du code sur le forum =)
Comme tu débutes, autant utiliser la dernière version de python, python2 sera bientôt obsolète et ne sera plus maintenue.

Maintenant, il faut bien comprendre comment fonctionne tkinter et les applis graphique en général, le code après le mainloop ne sera exécuté que lorsque tkinter sera clos, donc tu dois écrire tout ton code avant le mainloop.

Il existe un paramètre textvariable de Entry destiné justement à contenir les variables tkinter, voici un simple exemple selon ton souhait.

from Tkinter import *

def calculer(event):
    v = float(truc.get())
    result['text'] = v + 5

root = Tk()
v = StringVar()

truc = Entry(root, width=30, textvariable=v)
truc.pack()

result = Label()
result.pack()

root.bind('<Return>', calculer)

root.mainloop()


A noter qu'il n'y a aucune vérification de faite sur la valeur de v dans la fonction calculer, à toi de t'assurer que la saisie de l'utilisateur peut être convertie en float, et de gérer les erreurs si pas bon, il existe des méthodes pour n'autoriser que des valeurs strictes dans un widget entry, mais je pense que tu n'es pas encore assez calé pour arriver à les utiliser tout de suite.

Bon courage.
nanadu387 2 Messages postés mercredi 3 janvier 2018Date d'inscription 5 janvier 2018 Dernière intervention - 5 janv. 2018 à 17:57
Bonjour,
J'ai testé ton code, mais il ne fait pas ce dont j'ai besoin. En fait, quand je dis que je veux récupérer un nombre c'est pour l'utiliser dans un programme beaucoup plus grand.
Mon programme est déja fait, et au lieu de le demander à la console je voulais une fenêtre pour plus de simplicité (pour l'utilisateur, parce que pour le programmeur c'est l'inverse !!!)
J'ai besoin d'effectuer des calcules avec cette variable rentrée par l'utilisateur, or visiblement je ne peux pas avec ce programme...
Commenter la réponse de muny