[python] controle textCtrl

controle textCtrl [python] - Python - Programmation

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)
 
 

Reply

Marsh Posté le 30-05-2004 à 11:31:34   

Reply

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.

Reply

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 :) )

Reply

Marsh Posté le 31-05-2004 à 18:35:07    

merci effectivement convertissant ça fonctionne (un peu con ce controle ? textCtrl) vous trouvé pas ?

Reply

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?

Reply

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

Reply

Marsh Posté le 03-06-2004 à 10:46:42    

startx25 a écrit :


il pourrait s'en douter puisque c'est pour un textCtrl


 

Citation :


nbr=self.textCtrl2.GetValue()
self.textCtrl1.SetValue(nbr*2)


 
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()

Reply

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)  
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


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'>"

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed