IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

probleme de conversion en float


Sujet :

Tkinter Python

  1. #1
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 609
    Points : 2 073
    Points
    2 073
    Par défaut probleme de conversion en float
    Bonsoir,
    J'imagine que mon problème a déjà été soulevé plusieurs fois mais je ne comprends pas où est mon erreur.
    tkinter est pour moi tout récent.
    Voici mon 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
    from tkinter import * 
     
    def convert(): 
        #Récupération des variables
        val_pied = float(en.get())
        val_metre = val_pied*0.3048
        ch.configure(text = val_metre)
     
    fenetre = Tk() 
    fenetre.title("Conversions pieds - mètres") 
     
    txt1=Label(fenetre, text="Valeur en pieds : ").grid(row=1, column=1) 
    txt2=Label(fenetre, text='Valeurs en mètres : :').grid(row=2, column=1) 
     
    Button(fenetre,text='Calculer',command=convert).grid(row=4 , column=1) 
    Button(fenetre,text='Quitter',command=fenetre.destroy).grid(row=4, column=2) 
     
    de=Entry(fenetre) 
    en=Entry(fenetre) 
    ch = Label(fenetre) 
     
    de.grid(row=1, column=2) 
    en.grid(row=2, column=2) 
    ch.grid(row=5, column=2) 
     
    fenetre.mainloop()
    L'erreur déclenchée est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    convert
        val_pied = float(en.get())
    ValueError: could not convert string to float:
    Un peu d'aide sera bienvenue.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 313
    Points : 36 819
    Points
    36 819
    Par défaut
    Salut,

    Si "float" considère que la chaîne de caractère retournée par "en.get()" ne ressemble pas à un float... Il dira: "ValueError: could not convert string to float" et je ne vois pas comment il pourrait s'en sortir autrement.
    Toute la question est de savoir quelle chaîne de caractère peut bien retourner "en.get()".
    L'instruction magique pour le savoir est "print":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def convert(): 
        #Récupération des variables
        print('en.get():', en.get())
        val_pied = float(en.get())
        val_metre = val_pied*0.3048
        ch.configure(text = val_metre)
    Mais le vrai souci est dans le nommage de vos variables et/ou leur placement avec grid.
    Essayez de regrouper la construction des objets qui sont dans la même "row": si vous créer le Label à la ligne 15 et l'Entry 10 lignes plus loin, vos yeux vont vous jouer des tours!

    - W

  3. #3
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 609
    Points : 2 073
    Points
    2 073
    Par défaut
    Merci wiztricks,
    J'ai réussi à modifier mon code grâce à vos conseils.
    Il me reste à régler un problème d'affichage : le résultat ne s'affiche pas là où je le souhaite, c'est-à-dire juste en-dessous de l'entrée.
    Voici mon nouveau 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
    from tkinter import * 
     
    fenetre = Tk() 
    fenetre.title("Conversions pieds - mètres") 
     
    de=Entry(fenetre) 
    en=Entry(fenetre) 
    ch = Label(fenetre)
    de.grid(row=0, column=1) 
    en.grid(row=1, column=1) 
    ch.grid(row=1, column=2) 
     
    def convert(): 
        #Récupération des variables
        val_pied = float(de.get())
        val_metre = val_pied*0.3048
        ch.configure(text = val_metre)
     
    txt1=Label(fenetre, text="Valeur en pieds : ").grid(row=0, column=0) 
    txt2=Label(fenetre, text="Valeurs en mètres : ").grid(row=1, column=0) 
     
    Button(fenetre,text='Calculer',command=convert).grid(row=1 , column=3) 
    Button(fenetre,text='Quitter',command=fenetre.destroy).grid(row=4, column=3) 
     
    fenetre.mainloop()

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 313
    Points : 36 819
    Points
    36 819
    Par défaut
    Salut,

    Si vous dites que ça doit s'afficher dans le Label qui est en ligne=1, colonne=2... faut pas espérer que çà aille en colonne 1.
    Et vous êtes toujours empêtré avec des noms de variables et un regroupement de vos instructions qui ne vous aide pas.

    Que pensez vous de:
    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
    from tkinter import * 
     
    root = Tk() 
    root.title("Conversions pieds - mètres") 
     
    def convert(): 
        #Récupération des variables
        print('convert')
        val_pied = float(feet_entry.get())
        val_metre = val_pied*0.3048
        print('val_metre', val_metre)
        meter_label.configure(text = val_metre)
     
    # row 0
    Label(text="Valeur en pieds : ").grid(row=0, column=0)
    feet_entry = Entry()
    feet_entry.grid(row=0, column=1) 
     
    # row 1
    Label(text="Valeurs en mètres : ").grid(row=1, column=0) 
    meter_label = Label() 
    meter_label.grid(row=1, column=1) 
     
    Button(root,text='Calculer',command=convert).grid(row=1 , column=3) 
    Button(root,text='Quitter',command=root.destroy).grid(row=4, column=3) 
     
    root.mainloop()
    Je sais ce que je place dans la row 0, puis dans la row 1.
    Et dans convert, les noms de feet_entry et de meter_label aident bien à savoir dans quoi lire les "feet" et dans quoi écrire le résultat.

    - W

  5. #5
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 609
    Points : 2 073
    Points
    2 073
    Par défaut
    Merci encore pour vos précieux conseils.
    J'avais 2 entrées...
    Voici mon code mis à jour :

    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
    from tkinter import * 
     
    fenetre = Tk() 
    fenetre.title("Conversions pieds - mètres") 
     
    def convert(): 
        #Récupération des variables
        val_pied = float(pieds.get())
        val_metre = val_pied*0.3048
        sortie.configure(text = val_metre)
     
    # première rangée
    Label(fenetre, text="Valeur en pieds : ").grid(row=0, column=0)
    pieds=Entry(fenetre) 
    pieds.grid(row=0, column=1) 
     
    # deuxième rangée
    Label(fenetre, text="Valeurs en mètres : ").grid(row=1, column=0)
    metres=Label() 
    metres.grid(row=1, column=1)
    sortie = Label(fenetre)
    sortie.grid(row=1, column=1) 
     
    Button(fenetre,text='Calculer',command=convert).grid(row=1 , column=2) 
     
    # quatrième rangée
    Button(fenetre,text='Quitter',command=fenetre.destroy).grid(row=3, column=1) 
     
    fenetre.mainloop()

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme de conversion string to float
    Par cagli dans le forum Objective-C
    Réponses: 4
    Dernier message: 15/05/2013, 14h38
  2. probleme de conversion float en int
    Par murreya dans le forum C++
    Réponses: 2
    Dernier message: 17/12/2005, 15h27
  3. [Java]Conversion de float en String et inversement
    Par djoukit dans le forum Langage
    Réponses: 7
    Dernier message: 13/10/2005, 11h55
  4. Probleme de conversion de dates
    Par manu00 dans le forum Langage
    Réponses: 4
    Dernier message: 29/05/2005, 00h00
  5. [Math][Integer] Problème de conversion
    Par deathwing dans le forum API standards et tierces
    Réponses: 8
    Dernier message: 11/05/2004, 17h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo