IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

wxPython Discussion :

wx : récupérer valeur d'un TextCtrl


Sujet :

wxPython

  1. #1
    Invité
    Invité(e)
    Par défaut wx : récupérer valeur d'un TextCtrl
    Bonjour à tou(te)s...
    Je n'arrive pas (après multiples essais et combinaisons, ainsi que de recherches sur le net…)
    à récupérer la valeur entrée dans un champ texte. La fonction est OK (m'affiche bien les 'Print' en console…)
    Voici le script (merci pour votre aide) >>

    [ ne pas tenir compte de l'identation aperçue ICI > le script es correctement identé à l'origine… ]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    # coding: utf-8
    # Apprentissage WxPython - 28/11/19
    import wx
    
    class Fenetre(wx.Frame):
    	def __init__(self, parent, id):
    		wx.Frame.__init__(self, parent, id, size=(400, 200), style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER)  # Pas de redimensionnement fenêtre.
    		icon1 = wx.Icon("icones/P1.ico", wx.BITMAP_TYPE_ICO)
    		self.SetIcon(icon1)
    		self.SetBackgroundColour('#778899')  # LightSteelBlue
    		self.SetTitle('Apprentissage : APWX04')
    		self.Centre()
    
    		panel = wx.Panel(self)
    		sizer = wx.GridBagSizer(4, 5)
    		
    		text = wx.StaticText(panel, label="Nombre d'écoutes :")
    		text.SetForegroundColour('#4B0082')
    		font = wx.Font(12, wx.FONTFAMILY_DEFAULT, wx.NORMAL, wx.NORMAL)
    		text.SetFont(font)
    		sizer.Add(text, pos=(0, 3), flag=wx.TOP | wx.LEFT | wx.BOTTOM, border=20)
    		
    		tc = wx.TextCtrl(panel, id=1, size=(36, -1), style=wx.TE_CENTRE | wx.TE_PROCESS_ENTER,)
    		tc .SetBackgroundColour("#FFE4C4")
    		sizer.Add(tc, pos=(0, 4), span=(1, 2), flag=wx.TOP | wx.RIGHT | wx.BOTTOM, border=17)
    		self.Bind(wx.EVT_TEXT_ENTER, self.OnEnter)  # Gestionnaire ev. sur 'Entrée'.
    
    		buttonCalc = wx.Button(panel, label="Calculer", size=(60, 25))
    		sizer.Add(buttonCalc, pos=(3, 3), flag=wx.BOTTOM | wx.LEFT, border=115)
    		self.Bind(wx.EVT_BUTTON, self.OnClick, buttonCalc)  # Gestionnaire ev. sur clic bouton.
    
    		panel.SetSizer(sizer)
    
    	def OnClick(self, event):
    		print("Bouton cliqué !")  # OK : FONCTIONNE
    		msg1 = ("Vous avez entré : ", str(tc.GetValue()))  # NE FONCTIONNE PAS !
    		wx.MessageBox(msg1)
    	
    	def OnEnter(self, event):
    		print("Appui sur 'Entrée' !")  # OK : FONCTIONNE
    		msg1 = ("Vous avez entré : ", str(tc.TextCtrl.GetValue()))  # NE FONCTIONNE PAS !
    		wx.MessageBox(msg1)
    
    if __name__ == "__main__":
    	app = wx.App()
    	frame = Fenetre(parent=None, id=-1)
    	frame.Show()
    	app.MainLoop()
    Dernière modification par wiztricks ; 29/11/2019 à 14h30.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 426
    Points : 37 008
    Points
    37 008
    Par défaut
    Salut,

    # NE FONCTIONNE PAS ! voilà un message d'erreur qui aide à comprendre ce qu'il se passe.
    Mais vu le code, on peut imaginer que l'erreur est "NameError" parce que la variable tc n'est pas définie.

    Et là, la question a vous poser n'a rien à voir avec le sujet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >>> class A:
    ...      def __init__(self):
    ...           a = 1
    ...      def show_a(self):
    ...           print (a)
    ...
    >>> A().show_a()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 5, in show_a
    NameError: name 'a' is not defined
    >>>
    Question a la quelle vous devriez savoir répondre en ouvrant n'importe quel tuto.

    - W

  3. #3
    Invité
    Invité(e)
    Par défaut Re
    N'aurait-il pas été plus simple et/ou plus 'direct', de me donner la bonne syntaxe
    concernant les lignes 36 et 41 !? (qui ont d'ailleurs le même but et doivent au final être identiques)
    là, j'aurais compris d'où vient mon erreur, et ne l'aurait plus jamais reproduite.
    Moi qui a été formateur (dans un tout autre domaine) pendant pas mal d'années… j'apprécie
    votre réponse et son côté pédagogique
    Merci et bonne journée quand même. Je finirai sûrement par trouver… ailleurs

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Janvier 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Trinité-Tobago

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Janvier 2020
    Messages : 3
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Invité Voir le message
    N'aurait-il pas été plus simple et/ou plus 'direct', de me donner la bonne syntaxe
    concernant les lignes 36 et 41 !? (qui ont d'ailleurs le même but et doivent au final être identiques)
    là, j'aurais compris d'où vient mon erreur, et ne l'aurait plus jamais reproduite.
    Moi qui a été formateur (dans un tout autre domaine) pendant pas mal d'années… j'apprécie
    votre réponse et son côté pédagogique
    Merci et bonne journée quand même. Je finirai sûrement par trouver… ailleurs
    À la vue de la date je dirais que vous avez trouver le problème (je l'espère), mais je souhaiterais fournir un indice, vous déclarez tc dans votre classe il y a donc un mot clé particulier pour accéder à un attribut de classe dans une méthode.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Python powaaaaa
    Inscrit en
    Décembre 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Python powaaaaa
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2018
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Salut,

    il manque "self" pour la portée de la variable.

    J'ai changé le MessageBox en print pour la simplicité.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    # coding: utf-8
    # Apprentissage WxPython - 28/11/19
    import wx
     
    class Fenetre(wx.Frame):
    	def __init__(self, parent, id):
    		wx.Frame.__init__(self, parent, id, size=(400, 200), style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER)  # Pas de redimensionnement fenêtre.
    		icon1 = wx.Icon("icones/P1.ico", wx.BITMAP_TYPE_ICO)
    		self.SetIcon(icon1)
    		self.SetBackgroundColour('#778899')  # LightSteelBlue
    		self.SetTitle('Apprentissage : APWX04')
    		self.Centre()
     
    		panel = wx.Panel(self)
    		sizer = wx.GridBagSizer(4, 5)
     
    		text = wx.StaticText(panel, label="Nombre d'écoutes :")
    		text.SetForegroundColour('#4B0082')
    		font = wx.Font(12, wx.FONTFAMILY_DEFAULT, wx.NORMAL, wx.NORMAL)
    		text.SetFont(font)
    		sizer.Add(text, pos=(0, 3), flag=wx.TOP | wx.LEFT | wx.BOTTOM, border=20)
     
    		self.tc = wx.TextCtrl(panel, id=1, size=(36, -1), style=wx.TE_CENTRE | wx.TE_PROCESS_ENTER,) #self.tc /!\
    		self.tc .SetBackgroundColour("#FFE4C4")
    		sizer.Add(self.tc, pos=(0, 4), span=(1, 2), flag=wx.TOP | wx.RIGHT | wx.BOTTOM, border=17)
    		self.Bind(wx.EVT_TEXT_ENTER, self.OnEnter)  # Gestionnaire ev. sur 'Entrée'.
     
    		buttonCalc = wx.Button(panel, label="Calculer", size=(60, 25))
    		sizer.Add(buttonCalc, pos=(3, 3), flag=wx.BOTTOM | wx.LEFT, border=115)
    		self.Bind(wx.EVT_BUTTON, self.OnClick, buttonCalc)  # Gestionnaire ev. sur clic bouton.
     
    		panel.SetSizer(sizer)
     
    	def OnClick(self, event):
    		print("Bouton cliqué !")  # OK : FONCTIONNE
    		msg1 = ("Vous avez entré : ", str(self.tc.GetValue()))  # FONCTIONNE !
    		print(msg1)
     
    	def OnEnter(self, event):
    		print("Appui sur 'Entrée' !")  # OK : FONCTIONNE
    		msg1 = ("Vous avez entré : ", str(self.tc.GetValue()))  # FONCTIONNE !
    		#wx.MessageBox(msg1)
    		print(msg1)
     
    if __name__ == "__main__":
    	app = wx.App()
    	frame = Fenetre(parent=None, id=-1)
    	frame.Show()
    	app.MainLoop()

Discussions similaires

  1. [POI]Récupérer valeur cellule suivant format
    Par leminipouce dans le forum Documents
    Réponses: 1
    Dernier message: 27/10/2005, 09h52
  2. Récupérer valeur contrôle en dynamique via requête
    Par nicburger dans le forum Access
    Réponses: 10
    Dernier message: 15/09/2005, 16h41
  3. [ActionScript] Récupérer valeur balise <param />
    Par JohnBlatt dans le forum Flash
    Réponses: 1
    Dernier message: 18/07/2005, 15h50
  4. CR9 - Récupérer valeurs multiples d'un champ paramètre
    Par CR9-Deb dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 06/07/2005, 17h08
  5. récupérer valeur d'un ID après insertion
    Par rikidi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/08/2003, 23h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo