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 :

Problème de base sur les wxbutton


Sujet :

wxPython

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4
    Par défaut Problème de base sur les wxbutton
    Bonjour à tous,
    je cherche actuellement à m'entrainer pour l'utilisation des wxbutton pour transmettre des informations client/programme.
    J'ai tenté ce bout de code :

    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
    import wx
     
    class Bonjour(wx.Frame):
    	def __init__(self, titre):
    		wx.Frame.__init__(self, parent = None, id = 1,title = titre, size = (600, 100))
    		self.conteneur = wx.Panel(self, 1,size = self.GetClientSize())
    		self.etiquette = wx.StaticText(self.conteneur, -1,"Texte qui doit changer")
    		wx.EVT_SIZE(self, self.OnSize)
     
    		self.bouton = wx.Button(self.conteneur,2,"Changer la couleur")
    		wx.EVT_BUTTON(self, self.bouton.GetId(), self.OnMouseClick)
     
    	def OnSize(self, evt):
    		self.conteneur.SetSize(self.GetClientSize())
    		self.bouton.CentreOnParent(wx.HORIZONTAL)
     
    	def OnMouseClick(self, evt):
    		self.etiquette.SetForegroundColour('#FF0000')
     
    class MonApp(wx.App):
    	def OnInit(self):
    		fen = Bonjour("Exemple 2")
    		fen.Show(True)
    		self.SetTopWindow(fen)
    		return True
     
    app = MonApp()
    app.MainLoop()
    Pas de crash, mais l'effet escompté (changement de couleur) ne fonctionne pas. J'imagine que l'erreur ne doit pas être bien loin, mais je n'ai pas pu trouver d'exemples suffisament pertinents pour m'appuyer.

    Merci de votre aide,


    Jokester

  2. #2
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 16
    Par défaut
    T'es sur que cela ne fonctionne pas car j'ai essayé le code chez moi et ca fonctionne. Lorsque je clic, le texte devient rouge comme voulu.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4
    Par défaut
    Je suis sous windows, et l'écriture reste désespérement noire... Je n'y comprends rien.

    EDIT : j'y vois plus clair : mon bouton appelle bien la fonction. C'est juste "self.etiquette.SetForegroundColour('#FF0000')" qui n'agit pas. Pas bien grave étant donné que ce n'est qu'un exemple... Même si j'aurais bien aimé comprendre.

  4. #4
    Membre expérimenté
    Avatar de Alain_72
    Inscrit en
    Août 2004
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 180
    Par défaut
    Essaye d'ajouter cette méthode à ta fonction OnMouseClick()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.etiquette.Refresh()
    Il me semble en effet que sous Windows, un texte déjà écrit ne change de couleur qu'après un Refresh.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4
    Par défaut
    Merci ! C'est exactement ça. Je m'en souviendrais si j'ai encore ce genre de problèmes sous windows.
    J'ai un autre souci, du côté des champs wxTextCtrl. Ceux ci me renvoient avec GetValue() des données de type "unicode". Or je désire les obtenir en int. J'ai beau essayer de faire int(variable relevée par getvalue) je ne parviens pas à obtenir un integer. J'ai essayé aussi de passer par uncode, mais je ne sais pas bien m'en servir.

    Merci pour votre aide,


    Jokester

  6. #6
    Membre expérimenté
    Avatar de Alain_72
    Inscrit en
    Août 2004
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 180
    Par défaut
    Je ne vois pas où est le problème...

    Voir le code ci-dessous qui fonctionne parfaitement...

    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
    #! /usr/bin/env python
    #-*- coding: utf-8 -*-
     
    import wx
     
    class MaFenetre(wx.Frame):
        def __init__(self, titre):
            wx.Frame.__init__(self, None, -1, title = titre)
            sizer0 = wx.BoxSizer(wx.VERTICAL)
            sizer1 = wx.BoxSizer(wx.HORIZONTAL)
            panneau = wx.Panel(self, -1)
            self.text = wx.TextCtrl(panneau, -1)
            bouton = wx.Button(panneau, -1, "Valider")
            sizer1.Add(self.text, 0, wx.ALIGN_CENTER)
            sizer1.Add(bouton, 0, wx.ALIGN_CENTER)
            panneau.SetSizer(sizer1)
            sizer0.Add(panneau, 0)
            self.SetSizer(sizer0)
            self.Fit()
            self.Bind(wx.EVT_BUTTON, self.OnClick, bouton)
     
        def OnClick(self, event):
            print int(self.text.GetValue()) * 2        
     
    class MonApp(wx.App):
        def OnInit(self):
            fen = MaFenetre("test")
            fen.Show(True)
            self.SetTopWindow(fen)
            return True
     
    app = MonApp()
    app.MainLoop()

Discussions similaires

  1. problème de doublon sur les requêtes
    Par laurent7474 dans le forum Oracle
    Réponses: 6
    Dernier message: 08/12/2006, 10h31
  2. Problème de tri sur les dates par année puis mois
    Par rob2-9 dans le forum Access
    Réponses: 26
    Dernier message: 11/08/2006, 11h04
  3. [DOM] Problème d'accent sur les noms de fichier avec mon parseur
    Par ujoodha dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 06/04/2006, 21h55
  4. Question de base sur les classes
    Par deaven dans le forum C++
    Réponses: 3
    Dernier message: 27/11/2005, 16h20

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