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 :

exo 8.16 swinnen Pourquoi spécifier str? [Python 3.X]


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juillet 2017
    Messages : 15
    Points : 3
    Points
    3
    Par défaut exo 8.16 swinnen Pourquoi spécifier str?
    Bonjour,

    En regardant la correction de l'exercice, il type les formules de conversion dans les fonctions avec str.
    varTF.set(str(tF*1.8+32))

    Je comprend pas du tout pourquoi il fait ca... Car sans str ca marche de la même façon.

    Merci d'avance

    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
    from tkinter import *
     
    def convFar(event):
        #valeur de cette variable converti en fahrenheit
        tF=eval(champTC.get())
        varTF.set(str(tF*1.8+32))
     
    def convCel(event):
        tC=eval(champTF.get())
        varTC.set(str((tC-32)/1.8))
     
    fen=Tk()
    fen.title('fahrenheit/celsius')
     
    Label(fen,text="Temp. Celsius :").grid(row=0, column=0)
    varTC=StringVar()
    champTC=Entry(fen,textvariable=varTC)
    champTC.bind("<Return>",convFar)
    champTC.grid(row=0,column=1)
    #varTC.set("100.0")
     
    Label(fen,text="Temp. Fahrenheit :").grid(row=1,column=0)
    varTF=StringVar()
    champTF=Entry(fen,textvariable=varTF)
    champTF.bind("<Return>",convCel)
    champTF.grid(row=1,column=1)
    #varTF.set("212.0")
    fen.mainloop()

  2. #2
    Membre expérimenté
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 881
    Points : 1 544
    Points
    1 544
    Billets dans le blog
    4
    Par défaut
    Bonjour,
    La variable de contrôle StringVar mémorise une str.
    L'exemple de swinnen est explicite. Il en souligne le fait...
    Pour mémoriser un entier on utilise IntVar()
    #Rien de nouveau sous le soleil, tout est vanité comme courir après le vent!
    Developpement pour Android avec Python3/Kivy/Buildozer

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juillet 2017
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Merci.
    Mais c'est juste par convention ? car sans str c'est à dire juste la formule ça fonctionne.
    varTF.set(str(tF*1.8+32)) ou varTF.set(tF*1.8+32)

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 781
    Points
    36 781
    Par défaut
    Salut,

    tkinter n'échange que des chaînes de caractères avec TCL/Tk.
    La différence entre un StringVar et un IntVar est la conversion en "int" lorsqu'on accède à la valeur via .get.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> from tkinter import Tk, IntVar
    >>> root = Tk()
    >>> v = IntVar()
    >>> v.set('123')
    >>> v.get()
    123
    Si je mets n'importe quoi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> v.set('abc')
    >>> v.get()
    ....
    _tkinter.TclError: expected floating-point number but got "abc"
    >>>
    Pourquoi l'auteur du Swinnen s'est appliqué à mettre un "str", j'en sais rien: il faut lui demander. En tous cas, ce n'est pas pour résoudre un problème technique.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juillet 2017
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Merci c'est clair pour moi.

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

Discussions similaires

  1. aide exo 9.4 d'apprendre python 3 de Gerard Swinnen
    Par loicsu33 dans le forum Exercices
    Réponses: 14
    Dernier message: 27/08/2020, 08h16
  2. [Inutile] Vos solutions pour l'exo 8.32 du tuto de Swinnen
    Par PauseKawa dans le forum Général Python
    Réponses: 1
    Dernier message: 21/02/2011, 00h40
  3. Que choisir ? C# , VB.NET, C++, Delphi ? pourquoi ?
    Par Louis-Guillaume Morand dans le forum Général Dotnet
    Réponses: 475
    Dernier message: 08/04/2010, 19h27
  4. Programmer encore en VB 6 c'est pas bien ? Pourquoi ?
    Par Nektanebos dans le forum Débats sur le développement - Le Best Of
    Réponses: 85
    Dernier message: 10/03/2009, 14h43
  5. Pourquoi ces directives #ifndef ... en haut des .h
    Par Patrick PETIT dans le forum C
    Réponses: 8
    Dernier message: 06/03/2003, 23h53

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