controle textCtrl [python] - Python - Programmation
Marsh Posté le 30-05-2004 à 11:40:00
Je suis pret à parier que ton textCtrl2 contient une string et non pas un nombre. Cela explique pourquoi tu ne peux pas modifier sa valeur par 2 comme ça.
Marsh Posté le 31-05-2004 à 10:22:17
si ce qu'il dit est vrai fait :
nbr=self.textCtrl2.GetValue()
self.textCtrl1.SetValue(int(nbr)*2)
(merci taz )
Marsh Posté le 31-05-2004 à 18:35:07
merci effectivement convertissant ça fonctionne (un peu con ce controle ? textCtrl) vous trouvé pas ?
Marsh Posté le 01-06-2004 à 09:07:43
startx25 a écrit : merci effectivement convertissant ça fonctionne (un peu con ce controle ? textCtrl) vous trouvé pas ? |
Bennnn non, tu rentres du texte (string) ca te sort du texte (string), qu'est ce que ca a de con?
Marsh Posté le 02-06-2004 à 18:36:24
c'est qui est con c'est de pas pouvoir faire ceci : self.textCtrl1.SetValue(nbr*2)
et de passer par un convertisseur de type : self.textCtrl1.SetValue(int(nbr)*2)
il pourrait s'en douter puisque c'est pour un textCtrl
Marsh Posté le 03-06-2004 à 10:46:42
startx25 a écrit : |
Citation : |
ben, c'est un textCtrl justement.
Et de toute façon, l'interpréteur ne peut pas deviner que t'utilises ta variable en tant que int et non string.
Car tu récupères d'abord une chaîne avec ton GetValue()
Marsh Posté le 03-06-2004 à 10:57:45
startx25 a écrit : c'est qui est con c'est de pas pouvoir faire ceci : self.textCtrl1.SetValue(nbr*2) |
Heuu ton problème n'a rien a voire avec le textCtrl hein, c'est un problème de typage.
Tu récupères un string depuis ton textCtrl2, depuis quand on peut faire une multiplication sur un string en python? ben oui on peut pas, donc tu dois forcer un cast du string en int (par la fonction int(nbr)), puis il fait un cast automatique d'int vers string pour l'afficher
C'est de la logique de base et la resultante du typage "fort" de python. (ya pas beaucoup de langages dans lequel "machin"*2 a un sens en fait, et c'est exactement ce que tu essaies de nous faire ici)
Si le problème avait été que textCtrl ne faisait pas de cast, tu aurais du écrire str(int(nbr)*2), c'est pas le cas donc on voit bien que le textCtrl fait un cast implicite int->str
PS: tu peux essayer d'ailleurs, après "nbr=self.textCtrl2.GetValue()" ajoutes une ligne "print type(nbr)", je te parie un paquet de cacahuettes qu'il va répondre "<type 'str'>"
Marsh Posté le 30-05-2004 à 11:31:34
j'ai deux controle textCtrl et un bonton pour l'action.
je cherche à afficher le double de la valeur entrée dans le controle textctrl, mais ça ne marche po ?
def OnButton1Button(self, event):
nbr=self.textCtrl2.GetValue()
self.textCtrl1.SetValue(nbr*2)