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 :

wxbutton appelé 2 fois


Sujet :

wxPython

  1. #1
    Membre averti Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Points : 344
    Points
    344
    Par défaut wxbutton appelé 2 fois
    Bonjour,
    J'utlise WXglade (avec wx-2.8-msw-unicode)

    Après avoir créé les éléments, les WXbutton font deux appels de fonctions à chaque appui.

    exemple avec
    self.Bind(wx.EVT_BUTTON, self.go, self.button_3)

    Auriez vous une piste svp ?
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    Ah oui, c'est bizarre. le problème vient du fait que tu as mis des objets directement sur la frame (ou bien il faut enlever le event.Skip()). En général, on remplit initialement la frame avec un panel sur lequel on posera les widget
    => le bogue n'y est plus ainsi.

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    #!/usr/bin/env python
    # -*- coding: iso-8859-1 -*-
    # generated by wxGlade 0.5 on Wed Sep 26 22:17:31 2007 from D:\python\cutline\cutline03.wxg
     
    import wx,time
     
    class MyFrame(wx.Frame):
        def __init__(self, *args, **kwds):
            # begin wxGlade: MyFrame.__init__
            kwds["style"] = wx.DEFAULT_FRAME_STYLE
            wx.Frame.__init__(self, *args, **kwds)
            self.pnl = wx.Panel(self)
            self.label_1 = wx.StaticText(self.pnl, -1, "  Fichier source")
            self.button_1 = wx.Button(self.pnl, -1, "Parcourir")
            self.text_ctrl_1 = wx.TextCtrl(self.pnl, -1, "")
            self.label_2 = wx.StaticText(self.pnl, -1, "  Garder une ligne sur")
            self.label_5 = wx.StaticText(self.pnl, -1, "..................")
            self.text_ctrl_2 = wx.TextCtrl(self.pnl, -1, "")
            self.label_3 = wx.StaticText(self.pnl, -1, "  Fichier destination")
            self.button_2 = wx.ToggleButton(self.pnl, -1, "Auto")
            self.text_ctrl_3 = wx.TextCtrl(self.pnl, -1, "")
            self.label_4 = wx.StaticText(self.pnl, -1, "  Etat")
            self.button_3 = wx.Button(self.pnl, -1, "Go")
            self.label_6 = wx.StaticText(self.pnl, -1, "  Cutline 1.0")
     
            self.__set_properties()
            self.__do_layout()
     
            self.Bind(wx.EVT_BUTTON, self.parcourir, self.button_1)
            self.Bind(wx.EVT_TOGGLEBUTTON, self.auto, self.button_2)
            self.Bind(wx.EVT_BUTTON, self.go, self.button_3)
     
     
            self.compteur=0
            # end wxGlade
     
        def __set_properties(self):
            # begin wxGlade: MyFrame.__set_properties
            self.SetTitle("Cutline")
            self.SetBackgroundColour(wx.Colour(213, 213, 213))
            self.text_ctrl_1.SetMinSize((500, 24))
            self.text_ctrl_3.SetMinSize((500, 24))
            # end wxGlade
     
        def __do_layout(self):
            # begin wxGlade: MyFrame.__do_layout
            sizer_1 = wx.BoxSizer(wx.VERTICAL)
            grid_sizer_1 = wx.FlexGridSizer(4, 3, 2, 2)
            grid_sizer_1.Add(self.label_1, 0, 0, 0)
            grid_sizer_1.Add(self.button_1, 0, 0, 0)
            grid_sizer_1.Add(self.text_ctrl_1, 0, 0, 0)
            grid_sizer_1.Add(self.label_2, 0, 0, 0)
            grid_sizer_1.Add(self.label_5, 0, 0, 0)
            grid_sizer_1.Add(self.text_ctrl_2, 0, 0, 0)
            grid_sizer_1.Add(self.label_3, 0, 0, 0)
            grid_sizer_1.Add(self.button_2, 0, 0, 0)
            grid_sizer_1.Add(self.text_ctrl_3, 0, 0, 0)
            grid_sizer_1.Add(self.label_4, 0, 0, 0)
            grid_sizer_1.Add(self.button_3, 0, 0, 0)
            grid_sizer_1.Add(self.label_6, 0, 0, 0)
            sizer_1.Add(grid_sizer_1, 1, wx.EXPAND, 0)
            self.SetSizer(sizer_1)
            sizer_1.Fit(self.pnl)
            self.Layout()
            # end wxGlade
     
        def auto(self, event): # wxGlade: MyFrame.<event_handler>
            print "Event handler `auto' not implemented"
            event.Skip()
     
        def parcourir(self, event): # wxGlade: MyFrame.<event_handler>
            print "Event handler `parcourir' not implemented"
            event.Skip()
     
        def go(self, event): # wxGlade: MyFrame.<event_handler>
            print "Event handler `go' not implemented"
            self.compteur+=1
            self.label_6.SetLabel(str(self.compteur))
            event.Skip()
     
    # end of class MyFrame
     
     
    if __name__ == "__main__":
        print "--------------"
        app = wx.App(0)
        wx.InitAllImageHandlers()
        frame_1 = MyFrame(None, -1, "")
        app.SetTopWindow(frame_1)
        frame_1.Show()
        app.MainLoop()

  3. #3
    Membre averti Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Points : 344
    Points
    344
    Par défaut Ouf !!
    Heu..trop fort je cherchais depuis 3 jours !!
    C'est vrai que les précédentes fois je mettais un panel.
    C'est un peu le piège...

    Merci encore

    Alex

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 22
    Dernier message: 02/01/2007, 09h14
  2. [C# 2.0] Pourquoi le load est-il appelé plusieurs fois ?
    Par Worldofdada dans le forum ASP.NET
    Réponses: 9
    Dernier message: 14/09/2006, 08h34
  3. Action appelée 2 fois, avec des param différents
    Par DesiS dans le forum Struts 1
    Réponses: 2
    Dernier message: 23/08/2006, 10h47
  4. Réponses: 6
    Dernier message: 17/08/2006, 19h16
  5. Réponses: 5
    Dernier message: 14/04/2006, 18h58

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