Programmation/Tkinter

yam89421 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
quent217 Messages postés 420 Date d'inscription   Statut Membre Dernière intervention   -
Salut j'ai fait un programme python pour calculer si une année est bissextile ou non.
Mon programme marche en console. Mais maintenant j'essaye de lui donner une interface graphique avec la librairie Tkinter.
Mais quand j'appuie sur le bouton valider j'obtiens cette erreur.

File "C:/Users/yam89/Desktop/testg.py", line 36, in prog_bissextile
restepar4 = saisir % 4
TypeError: unsupported operand type(s) for %: 'StringVar' and 'int'

Voici mon programme:


La fenetre de mon programme:


Si il vous plait j'ai besoin d'aide

2 réponses

quent217 Messages postés 420 Date d'inscription   Statut Membre Dernière intervention   347
 
Bonjour,
Une StringVar est une variable Tkinter mais elle ne peut pas être utilisée directement dans des calculs. Pour récupérer sa valeur il faut utiliser
saisir.get()
. De plus, cette méthode retourne une chaine de caractère mais vous avez besoins d'un entier, il faut donc faire
int(saisir.get())
.

Dans vos prochains messages, veuillez copier-coller votre code plutôt que de partager une image car cela permet aux personnes qui souhaitent vous aider de pouvoir copier ce code à leur tour pour le tester.
Merci de votre compréhension.
2
yam89421 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Oui merci j'ai lu votre réponse et en effet cela marche maintenant merci beaucoup
mais maintenant quand je rentre un nombre à 3 chiffre cela marche il me dit si c'est bissextile, mais quand je met un nombre à 4 chiffre j'appuie sur le bouton valider et il ne se passe rien
0
quent217 Messages postés 420 Date d'inscription   Statut Membre Dernière intervention   347
 
Êtes-vous sûr d'avoir correctement fait vos tests ? Je ne pense pas que le problème soit lié au nombre de chiffres.
Je vous laisse essayer avec plusieurs valeurs différentes pour trouver d'où vient le problème.
0
tpez Messages postés 331 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
Je pense que ton problème vient du type de tes variables dans ton calcul.
TypeError: unsupported operand type(s) for %: 'StringVar' and 'int' 


Je m'explique, il semble que l'opérateur % rencontre un problème avec une string (une chaine) et puisque ton code resemble à ceci :
restepar4 = saisir % 4 

Et que nous savons que 4 est bien un int dans ce cas là, ce doit être la variable saisir à l'origine du problème. Tu devrais donc essayer ceci :
restepar4 = int(saisir) % 4 
0
yam89421 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour merci pour ta réponse, j'ai essayer ce que tu m'a dit et maintenant j'ai cette erreur

TypeError: int() argument must be a string, a bytes-like object or a number, not 'StringVar'

je pense que le problème vient de cette ligne

self.zdt = Entry(fenetre, textvariable=saisir, width=7)


mais je n'en suis pas sûr
0
quent217 Messages postés 420 Date d'inscription   Statut Membre Dernière intervention   347 > yam89421 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Avez-vous lu ma réponse juste en dessous ?
0