Problème Python
funbad9
Messages postés
1
Statut
Membre
-
Phil_1857 Messages postés 1956 Statut Membre -
Phil_1857 Messages postés 1956 Statut Membre -
Bonjour,
Je commence à peine Python et je vient de créer mon premier programme. Il consiste a calculer combien de jours, minutes et secondes une personne a vécu.
Cependant, je rencontre une difficulté, quand j'exécute le programme, cela m'affiche -TypeError: unsupported operand type(s) for *: 'Entry' and 'int'- et je ne sais pas comment résoudre ce problème...
Pouvez-vous m'aider
merci :)
Je commence à peine Python et je vient de créer mon premier programme. Il consiste a calculer combien de jours, minutes et secondes une personne a vécu.
Cependant, je rencontre une difficulté, quand j'exécute le programme, cela m'affiche -TypeError: unsupported operand type(s) for *: 'Entry' and 'int'- et je ne sais pas comment résoudre ce problème...
Pouvez-vous m'aider
merci :)
from tkinter import *
def valider():
days['text'] = champAge*365
minutes['text'] = champAge*525948
seconds['text'] = chamAge*31556926
fenetre = Tk()
fenetre.title('How long have you lived')
fenetre.geometry('500x300')
label0 = Label(fenetre, text="Hey ! Let's see how long you have lived in days, minutes and seconds!", bg='yellow', relief=GROOVE)
label0.pack()
lblNom = Label(fenetre, text="Quel est votre nom", bg='pink', relief=GROOVE)
lblNom.pack()
champNom = Entry(fenetre)
champNom.pack()
lblAge = Label(fenetre, text= 'now enter your age', bg='pink', relief=GROOVE)
lblAge.pack()
champAge = Entry(fenetre)
champAge.pack()
bouton = Button(fenetre, text='Valider', bg= 'blue', relief=GROOVE, command=valider)
bouton.pack()
days = Label(fenetre, bg='bisque', relief=GROOVE, text="Résultat.....")
days.pack()
minutes = Label(fenetre, bg='bisque', relief=GROOVE, text="Résultat.....")
minutes.pack()
seconds = Label(fenetre, bg='bisque', relief=GROOVE, text="Résultat.....")
seconds.pack()
frame1 = Frame(fenetre, width=200, height=200, bg='bisque', relief=GROOVE)
frame1.pack()
frame1.pack_propagate(False)
fenetre.mainloop()
7 réponses
Bonjour funbad9,
Effectivement, tu débutes ...
Est-ce que tu réalise que champAge est un objet qui représente un widget Entry de ton interface et non pas la valeur entrée ?
Donc on ne peut pas multiplier cet objet par un entier : days['text'] = champAge*365
C'est comme si on multipliait une carotte par un chou-fleur !
Il faut plutôt apprendre à récupérer le texte de l'Entry, le lien vers un doc Python et Tkinter sympa:
https://www.inforef.be/swi/download/apprendre_python3.pdf
Je te proposerais bien de regarder vers la bibliothèque datetime qui gère directement les dates et heures, pour raccourcir un peu ton code, mais commence déjà par faire tourner ce que tu as fait, pour commencer petit à petit ...
Au fait, dans ton interface, la moitié des textes est en français et l'autre en anglais
Effectivement, tu débutes ...
Est-ce que tu réalise que champAge est un objet qui représente un widget Entry de ton interface et non pas la valeur entrée ?
Donc on ne peut pas multiplier cet objet par un entier : days['text'] = champAge*365
C'est comme si on multipliait une carotte par un chou-fleur !
Il faut plutôt apprendre à récupérer le texte de l'Entry, le lien vers un doc Python et Tkinter sympa:
https://www.inforef.be/swi/download/apprendre_python3.pdf
Je te proposerais bien de regarder vers la bibliothèque datetime qui gère directement les dates et heures, pour raccourcir un peu ton code, mais commence déjà par faire tourner ce que tu as fait, pour commencer petit à petit ...
Au fait, dans ton interface, la moitié des textes est en français et l'autre en anglais
Et pourtant, je t'ai donné un lien vers une doc qui explique tout ça … :-)
on définit un widget Entry sur l'interface graphique:
age_entree = Entry(fenetre) : age_entree n'est que le nom de la boite de saisie Entry
et ensuite, dans la fonction valider(), on récupère le texte entré avec la méthode qui va bien
texte_entre = age_entree.methode_qui_va_bien()
jours= float(texte_entre) * 365.25 (dans une année il y a 365 jours 1/4)
Ensuite, si tu veux afficher jours dans le Label nommé days, il ne suffit pas d'écrire
days['text'] = jours
Là encore il y a une méthode qui s'appelle config() pour remplir le Label ...
Regarde vers la page 116 de la doc ....
on définit un widget Entry sur l'interface graphique:
age_entree = Entry(fenetre) : age_entree n'est que le nom de la boite de saisie Entry
et ensuite, dans la fonction valider(), on récupère le texte entré avec la méthode qui va bien
texte_entre = age_entree.methode_qui_va_bien()
jours= float(texte_entre) * 365.25 (dans une année il y a 365 jours 1/4)
Ensuite, si tu veux afficher jours dans le Label nommé days, il ne suffit pas d'écrire
days['text'] = jours
Là encore il y a une méthode qui s'appelle config() pour remplir le Label ...
Regarde vers la page 116 de la doc ....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question