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 :

Opérations sur les cases Entry


Sujet :

Tkinter Python

  1. #1
    Membre régulier Avatar de RowanMayfair
    Femme Profil pro
    Développeuse Freelance
    Inscrit en
    Mars 2019
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeuse Freelance

    Informations forums :
    Inscription : Mars 2019
    Messages : 247
    Points : 89
    Points
    89
    Par défaut Opérations sur les cases Entry
    Bonjour,

    Mon problème du jour...est électrique, une histoire de tensions et de résistances :
    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
    44
    45
    46
    47
    48
    49
    50
    from tkinter import*
    
    def tension(event) :
        "Entrée de la valeur de la tension, exprimée en Volts"
        global t
        t = (eval(champT.get()))
        chT.configure(text='tension = ' + str(t))
    
        if r : 
            i = t/r
            chI.configure(text="L'intensité est donc \nde " + str(i) + " ampères")
        
    
    def resistance(event) :
        "Entrée de la valeur de la résistance, exprimée en Ohms"
        global r
        r = (eval(champR.get()))
        chR.configure(text='résistance = ' + str(r))
    
        i = t/r
        chI.configure(text="L'intensité électrique \nest donc de " + str(i) + " ampères"
    
    fen = Tk()
    fen.title('Schéma électrique simple')
    
    can = Canvas(fen,bg='white',width=1000,height=700)
    can.grid(column=1,row=1,rowspan=6)
    
    Label(fen,text='Tension \n(en volts)').grid(row=1,column=2)
    champT = Entry(fen)
    champT.bind("<Return>",tension)
    champT.grid(row=1,column=3)
    chT = Label(fen)
    chT.grid(row=2,column=3)
    
    Label(fen,text='Résistance \n(en Ohms)').grid(row=3,column=2)
    champR = Entry(fen)
    champR.bind("<Return>",resistance)
    champR.grid(row=3,column=3)
    chR = Label(fen)
    chR.grid(row=4,column=3)
    
    chI = Label(fen)
    chI.grid(row=5,column=2,columnspan=2)
    
    Button(fen,text='Bye Bye', command=fen.quit).grid(row=6,column=3)
    
    fen.mainloop()
    
    fen.destroy()
    Vous l'aurez compris, l'utilisateur entre la tension et la résistance, ce qui permet de calculer l'intensité électrique.
    Mais voilà, je ne sais pas quoi en faire, de cette intensité.
    Elle est liée aux valeurs saisies dans les 2 cases Entry, donc après avoir essayer des tas de trucs étranges, j'ai fini par la mettre dans les 2 fonctions liées auxdites cases Entry.
    Et ça marche...presque.
    Puisque évidemment, quand je rentre la tension, il n'y a pas encore de "r" (pour la résistance), j'ai donc un message d'erreur qui me dit "blabla r non defined"
    Dès que je saisi dans la case pour la résistance, plus de soucis, mon calcul d'intensité s'affiche comme je le souhaite.

    J'ai bien tenté un "if r : " mais ça ne fonctionne pas.

    Quelqu'un pour me donner un coup de main please ?

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

    Citation Envoyé par RowanMayfair Voir le message
    Quelqu'un pour me donner un coup de main please ?
    Plutôt que d'avoir un event lorsque l'utilisateur tape <Return> sur l'une ou l'autre Entry, vous créez un Button "Calculer" qui permet à l'utilisateur de signaler qu'il a bien saisi les 2 Entry.... Si c'est le cas, vous effectuez le calcul, sinon vous affichez un message d'erreur (ou vous donnez une valeur par défaut à vos Entry).

    - W

  3. #3
    Membre régulier Avatar de RowanMayfair
    Femme Profil pro
    Développeuse Freelance
    Inscrit en
    Mars 2019
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeuse Freelance

    Informations forums :
    Inscription : Mars 2019
    Messages : 247
    Points : 89
    Points
    89
    Par défaut
    Oui mais....je crois que je ne suis pas censée créer de bouton "calculer".
    D'après l'énoncé "des 'étiquettes' doivent afficher en permanence les tensions et intensités résultant des choix effectués par l'utilisateur"
    Donc ce que j'en comprends, c'est qu'à chaque fois qu'on modifie l'une des valeurs (tension ou résistance), le Label qui affiche le calcul d'intensité se met à jour automatiquement.

    (d'ailleurs maintenant que je relis faut que je les déplace mes chT et chR)

    Ou alors j'ai mal compris, après tout il n'est dit explicitement qu'il est interdit de créer un bouton "calculer"

  4. #4
    Membre régulier Avatar de RowanMayfair
    Femme Profil pro
    Développeuse Freelance
    Inscrit en
    Mars 2019
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeuse Freelance

    Informations forums :
    Inscription : Mars 2019
    Messages : 247
    Points : 89
    Points
    89
    Par défaut
    Personne ?
    C'est le seul problème qu'il me reste.
    J'ai tout essayé (sauf ce qu'il faut manifestement ) : attribuer des variables à mes cases Entry (inutile puisqu'on ne peut pas faire d'opération), évidemment définir une fonction mais...reliée à quoi ? Pas à Label du moins. Ne pas définir de fonction et faire simplement les calculs, mais là j'ai des "blabla non defined", que je le mette n'importe où avec toutes les global que je veux.
    Bref, je sèche.
    C'est dommage j'ai réussi le reste de l'exercice. et j'ai mon bouton on/off qui fonctionne correctement (et je n'en suis pas peu fière, ce fut compliqué pour que tout soit OK, y compris le dessin ).

    Il me reste plus que cette histoire.

    Au pire, si j'ai pas de réponse, je définirai une fonction que je relierai à un bouton calculer. Mais ce serait dommage je trouve

Discussions similaires

  1. Opération sur les dossier...
    Par bdaboah dans le forum Langage
    Réponses: 5
    Dernier message: 01/11/2005, 17h28
  2. [OpenGL/C++] Opérations sur les Textures
    Par Bob.Killer dans le forum OpenGL
    Réponses: 6
    Dernier message: 10/08/2005, 10h27
  3. Opérations sur les matrices...
    Par aokiseiichiro dans le forum C
    Réponses: 32
    Dernier message: 28/07/2005, 17h10
  4. opérations sur les bits d'un byte
    Par petitours dans le forum C++Builder
    Réponses: 4
    Dernier message: 10/02/2004, 20h42
  5. opérations sur les dates
    Par coucoucmoi dans le forum Débuter
    Réponses: 2
    Dernier message: 12/08/2003, 11h45

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