Programmation/Tkinter

Fermé
yam89421 Messages postés 3 Date d'inscription mercredi 10 avril 2019 Statut Membre Dernière intervention 10 avril 2019 - 10 avril 2019 à 08:47
quent217 Messages postés 421 Date d'inscription vendredi 25 septembre 2015 Statut Membre Dernière intervention 1 mars 2024 - 10 avril 2019 à 22:59
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
A voir également:

2 réponses

quent217 Messages postés 421 Date d'inscription vendredi 25 septembre 2015 Statut Membre Dernière intervention 1 mars 2024 344
10 avril 2019 à 13:45
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 mercredi 10 avril 2019 Statut Membre Dernière intervention 10 avril 2019
10 avril 2019 à 20:25
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 421 Date d'inscription vendredi 25 septembre 2015 Statut Membre Dernière intervention 1 mars 2024 344
10 avril 2019 à 22:59
Ê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 330 Date d'inscription lundi 4 juillet 2016 Statut Membre Dernière intervention 17 juin 2019 39
Modifié le 10 avril 2019 à 10:16
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 mercredi 10 avril 2019 Statut Membre Dernière intervention 10 avril 2019
10 avril 2019 à 20:08
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 421 Date d'inscription vendredi 25 septembre 2015 Statut Membre Dernière intervention 1 mars 2024 344 > yam89421 Messages postés 3 Date d'inscription mercredi 10 avril 2019 Statut Membre Dernière intervention 10 avril 2019
10 avril 2019 à 20:23
Avez-vous lu ma réponse juste en dessous ?
0