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 :

Mon bouton "Action" qui ne fonctionne pas


Sujet :

wxPython

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 82
    Points : 36
    Points
    36
    Par défaut Mon bouton "Action" qui ne fonctionne pas
    Bonjour,
    je soumets à votre sagacité un problème que je n'arrive pas à résoudre avec mes petites connaissances.
    Je souhaite deverouiller le bouton "Dés" en appuyant sur le bouton "Action".
    Je pense que si vous essayez le petit bout de code qui suit, vous comprendrez mieux ce que je veux dire.

    Mon problème, c'est que cela ne fonctionne pas ^^. Le bouton action ne semble pas pointer sur la methode encapsulée de la classe "Interface_Dice".

    Si quelqu'un peut m'expliquer pourquoi et comment faire pour que cela fonctionne.
    Je le remercie par avance.

    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
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
     
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
     
     
    import wx
     
     
    class SimpleFrame(wx.Frame):
        def __init__(self, parent, id, title):
            wx.Frame.__init__(self, parent, id, title)
     
            frameSizer = wx.BoxSizer(wx.VERTICAL)
            panelSizer = wx.BoxSizer(wx.VERTICAL)
     
            conteneur = wx.Panel(self, -1)
     
            # panel_B : Interface Graphique
            panel_B = InterfaceGraphique(conteneur)
     
            panelSizer.Add(panel_B, 0, wx.EXPAND)
     
            conteneur.SetSizer(panelSizer)
            frameSizer.Add(conteneur, 1, wx.EXPAND)
            self.SetSizer(frameSizer)
            frameSizer.SetSizeHints(self)
     
            self.Show(True)
     
    #-------------------------------------------------------------------------
    class InterfaceGraphique(wx.Panel):
        """Interface_Graphique de la fenêtre principale"""
    #-------------------------------------------------------------------------
     
        def __init__(self, parent):
            wx.Panel.__init__(self, parent, -1)
     
            # Initialise les différents Sizer
            vbox_top = wx.BoxSizer(wx.VERTICAL)
            vbox = wx.BoxSizer(wx.HORIZONTAL)
     
     
    #*********************************************************
         # panel2 : Interface Joueur
    #*********************************************************
     
         # Create a panel to house everything
            self.panel2 = wx.Panel(self, -1)
     
          # Create vertical box sizer : bordure
            self.bordure2 = wx.BoxSizer(wx.VERTICAL)
     
            # Création du Widget wxStaticBox : Interface joueur avec son Sizer
            self.staticBox2 = wx.StaticBox ( self.panel2, -1, 'Interface Joueur' )
            self.staticBoxSizer2 = wx.StaticBoxSizer(box = self.staticBox2, orient=wx.VERTICAL)
     
            #-------------------------------------------------------------
            # écran "Lancé de dés"
            #-------------------------------------------------------------
            self.boxSizer4 = wx.BoxSizer(orient=wx.VERTICAL)
            # Création du Widget "StaticBox5" 'Lancé de Dés' avec son Sizer
            self.staticBox5 = wx.StaticBox( self.panel2, -1, 'Lance de Des' )
            self.sizer_Dice = wx.StaticBoxSizer(box=self.staticBox5, orient=wx.HORIZONTAL)
            # Création du panel "panel_Dice"
            self.panel_Dice = Interface_Dice(self.panel2, self.sizer_Dice)
            # Configure le StaticBox contenant l'écran : "Lancé de dés"
            self.boxSizer4.Add(self.sizer_Dice, 0, border=0, flag=wx.EXPAND)
            # Ajout au sizer du Panel2
            self.staticBoxSizer2.AddSizer(self.boxSizer4, 0, border=0, flag=wx.EXPAND)
     
            #-------------------------------------------------------------
            # écran "Actions"
            #-------------------------------------------------------------
            self.boxSizer5 = wx.BoxSizer(orient=wx.VERTICAL)
           # Création du Widget "StaticBox" : "Actions" avec son Sizer
            self.staticBox7 = wx.StaticBox( self.panel2, -1, 'Actions')
            self.sizer_Actions = wx.StaticBoxSizer(box=self.staticBox7, orient=wx.VERTICAL)
            # Création du panel "panel_Actions"
            self.panel_Actions = Interface_Actions(self.panel2, self.sizer_Actions)
            # Configure the box sizers
            self.boxSizer5.AddSizer(self.sizer_Actions, 1, border=0 ,flag=wx.EXPAND | wx.ALL)
            # Ajout au sizer du Panel2
            self.staticBoxSizer2.AddSizer(self.boxSizer5, 0, border=0, flag=wx.EXPAND)
     
     
          #-----------------------------------------------------------
          # Configure the box sizers du Panel2
            self.bordure2.Add(self.staticBoxSizer2, 1, wx.EXPAND | wx.ALL, 5)
     
          # Attach everything
            self.panel2.SetSizerAndFit (self.bordure2)
            vbox.Add(self.panel2, 1, wx.EXPAND)
     
     
    #*********************************************************
    #       Rendu final du sizer
            vbox_top.Add(vbox, 1, wx.EXPAND)
            self.SetSizer(vbox_top)
    #*********************************************************
     
     
     
    #-------------------------------------------------------------------------
    class Interface_Dice(wx.Panel):
        """Création de l'interface "Panel_Dice"""
    #-------------------------------------------------------------------------
     
        def __init__(self, parent, Sizer_Conteneur):
     
            wx.Panel.__init__(self, parent, -1)
     
            # Initialisation
            self.parent = parent
            self.conteneur = Sizer_Conteneur
     
            # Création du panel "panel_Roll" et Liaison du panel avec le sizer "conteneur"
            self.panel_Dice = wx.Panel(parent, -1)
            self.conteneur.Add(self.panel_Dice, 1, border=0, flag= wx.EXPAND)
     
            # Création des Widgets "Lancé de Dés" contenu dans le panel_Roll
            self.buttonDice = wx.Button(id=20001, parent=self.panel_Dice, label='Des')
            self.buttonDice.Enable(False)
     
            # Création du Sizer dans le Widget
            self.gridBagSizer1 = wx.GridBagSizer(0,0)
     
            # Ajout des Widgets dans le Sizer
            self.gridBagSizer1.Add(self.buttonDice, (4, 4), flag=wx.EXPAND | wx.ALL, span=(1, 2), border=5)
     
     
            # Configuration du Sizer
            self.panel_Dice.SetSizerAndFit(self.gridBagSizer1)
     
            # Evenements
            self.buttonDice.Bind(wx.EVT_BUTTON, self.OnRollButton, id=20001)
     
     
        #*********************************************************
        #       Méthodes du panel: "Lancé de dés"
     
        def Initialise_interface_Dice(self):
            self.buttonDice.Enable(True)
     
     
        def OnRollButton(self, event):
            wx.MessageBox(u"Coucou, je suis dans la Methode : OnRollButton(self, event) ^-^   ", "OnRollButton(self, event)")
            event.Skip()
     
    #-------------------------------------------------------------------------
    class Interface_Actions(wx.Panel):
        """Création de l'interface "Panel_Actions"""
    #-------------------------------------------------------------------------
     
        def __init__(self, parent, Sizer_Conteneur):
     
            wx.Panel.__init__(self, parent, -1)
     
            # Initialisation
            self.parent = parent
            self.conteneur = Sizer_Conteneur
     
            # Création du panel "panel_Roll" et Liaison du panel avec le sizer "conteneur"
            self.panel_Actions = wx.Panel(self.parent, -1)
            self.conteneur.Add(self.panel_Actions, 1, border=0, flag= wx.EXPAND)
     
            # Création des Boutons
            self.button1 = wx.Button(id=2010, label='Action', parent=self.panel_Actions)
     
            # Création des Sizers des boutons
            self.vBoxSizer_button = wx.BoxSizer(orient=wx.HORIZONTAL)
     
            # Ajout des boutons dans les Sizers respectifs
            self.vBoxSizer_button .Add(self.button1, 1, border=-1, flag=wx.ALIGN_CENTER | wx.ALIGN_LEFT)
     
          # Configure the box sizers
            self.panel_Actions.SetSizer(self.vBoxSizer_button)
     
            # Evenements
            self.button1.Bind(wx.EVT_BUTTON, self.OnButtonEssai, id=2010)
     
     
    #*********************************************************
    #       Méthodes du panel: "Actions"
     
        def OnButtonEssai(self, event):
    #        wx.MessageBox(u"Coucou, je suis dans la Methode : OnButtonEssai(self, event) ^-^   ", "OnButtonEssai(self, event)")
            Interface_Dice.Initialise_interface_Dice()
     
     
    app = wx.App()
    SimpleFrame(None, -1, u'Ma Belle Fenetre')
    app.MainLoop()

  2. #2
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 92
    Points : 109
    Points
    109
    Par défaut
    Bonjour jeune padawan ,

    Tout en bas de ton code, la ligne :

    Interface_Dice.Initialise_interface_Dice()

    n'est pas bonne.

    Par ceci la remplacer tu dois :

    self.GetParent().GetParent().panel_Dice.Initialise_interface_Dice()

    Ton but est d'accéder à une méthode denommée Initialise_interface_Dice() du panel panel_Dice, donc il te faut accéder à panel_Dice et pour ça il te faut retrouver son parent.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 82
    Points : 36
    Points
    36
    Par défaut
    Bonjour et merci Sensei
    Toujours tu demandes, toujours tu appliques et toujours tu comprends
    Grande est ta Force, Sensei
    The force will be with you

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

Discussions similaires

  1. Action Listener qui ne fonctionne pas
    Par pinps dans le forum Débuter avec Java
    Réponses: 36
    Dernier message: 21/11/2013, 17h09
  2. hover sur un input bouton dans le css qui ne fonctionne pas
    Par patricktoulon dans le forum Mise en page CSS
    Réponses: 94
    Dernier message: 18/07/2013, 16h47
  3. Réponses: 2
    Dernier message: 16/03/2010, 09h49

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