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.Dialog] wx.Dialog.GetReturnCode toujours wx.ID_CANCEL


Sujet :

wxPython

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 154
    Par défaut [wx.Dialog] wx.Dialog.GetReturnCode toujours wx.ID_CANCEL
    Bonjour à tous,

    Je vous écris car je ne comprends plus rien.

    Tout d'abord, je débute en python et wxpython.
    Dans le cadre de mon projet, je dois à un moment créer un formulaire permettant de saisir différentes données.
    J'ai adjoint à ce formulaire deux boutons avec les id wx.ID_APPLY et wx.ID_CANCEL. Malheureusement pour moi et surement par ma faute, que je clique sur l'un ou sur l'autre bouton, c'est toujours ID_CANCEL qui est renvoyé.
    Voici une partie de mon code source pour vous fair une idée.
    Classe étendant dialog
    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
    class Form (wx.Dialog):
        def __init__(self,parent=None,object=None, conf=None):
            self.object = object
            self.conf = formConf.FormConfiguration(conf)
            wx.Dialog.__init__(self,parent)
            #self.SetSize(wx.Size(200,200))
            self.initGraphics()
            pass
     
        def initGraphics(self):
            sizer = wx.GridBagSizer()
            i = 1
            self.elements = {}
            for confElement in self.conf.elements:
                attribut=confElement['attribut']
                value = ''
                if self.object:
                    value = self.object.__dict__[attribut]
                element = formElement.FormElement(self,confElement,value)
                self.elements[attribut]=element
                sizer.Add(element, (i,0,),(1,1), wx.EXPAND)
                i = i+1
            tmp = self.createButtonsPanel()
            sizer.Add(tmp, (i,0),(1,1), wx.EXPAND)
            self.SetSizer(sizer)
            pass
     
        def createButtonsPanel(self):
            buttonSizer = wx.BoxSizer(wx.HORIZONTAL)
            panel = wx.Panel(self)
            if self.object:
                button = wx.Button(panel,id = wx.ID_APPLY)
            else:
                button = wx.Button(panel,id = wx.ID_ADD)
            print "ids button = ",wx.ID_ADD,wx.ID_APPLY,wx.ID_CANCEL,button.GetId()
            self.Bind(wx.EVT_BUTTON,self.OnAddModify,button)
            buttonSizer.Add(button, 0, wx.GROW|wx.ALIGN_LEFT|wx.ALL, 5)
            button = wx.Button(panel,id = wx.ID_CANCEL)
            buttonSizer.Add(button, 0, wx.GROW|wx.ALIGN_LEFT|wx.ALL, 5)
            panel.SetSizer(buttonSizer)
            return panel
     
     
        def OnAddModify(self, event):
            print "Form.py.OnAddModify"
            for attribut in self.elements:
                print "self.",object.__class__.__name__,".__dict__[",attribut,"]=",self.elements[attribut].getValue()
                self.object.__dict__[attribut]=self.elements[attribut].getValue()
            print "Form.py.OnAddModify return code : ",self.GetReturnCode()
            res = self.Close()
            print "Form.py.OnAddModify return code : ",res
    Appel à la classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        def OnAdd(self, event):
            element = Element.Element()
            confPath = self.facade.computePath(Configuration.Configuration.getInstance('general').getProperty('element.description'))
            panel = elementPanel.ElementPanel(parent = self.parent,conf=confPath, element = element,facade = self.facade)
            panel.SetPosition(self.position)
            result = panel.ShowModal()
            print result,panel.GetReturnCode(), " (OK : ", wx.ID_OK,", CANCEL = ",wx.ID_CANCEL,")"
            if result== wx.ID_OK:
                print panel.element
                self.desktop.elements.append(panel.element)
            pass
    Et voici à quoiressemble la sortie en appuyant sur le bouton ID_APPLY :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ids button =  5118 5102 5101 -214
    Form.py.OnAddModify
    self. type .__dict__[ nom ]= aze
    self. type .__dict__[ commande ]= aze
    self. type .__dict__[ icone ]= $INSTALL_PATH$\resources\default.gif
    Form.py.OnAddModify return code :  0
    Form.py.OnAddModify return code :  True
    5101 5101  (OK :  5100 , CANCEL =  5101 )
    Merci par avance,
    J'ai effectué quelques recherches, mais je n'arrive pas à trouver le problème.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 154
    Par défaut
    ReBOnjour,
    Problème résolu,
    Il ne fallait pas en fait lier le bouton wx.ID_APPLY avec une méthode. (la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.Bind(wx.EVT_BUTTON,self.OnAddModify,button)
    ) Et faire le traitement plutôt dans la classe qui récupère les données

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

Discussions similaires

  1. Pop-up d'une dialog box a partir d'un bouton
    Par bobbyjack dans le forum MFC
    Réponses: 21
    Dernier message: 13/09/2005, 15h32
  2. Difference entre fenetre et boite de dialog
    Par billyboy dans le forum Windows
    Réponses: 2
    Dernier message: 02/06/2003, 15h43
  3. Empecher le curseur de sortir du dialog
    Par Gadjo dans le forum MFC
    Réponses: 5
    Dernier message: 18/11/2002, 18h01
  4. [awt][dialog]
    Par Ultra-FX dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 06/11/2002, 16h22
  5. Quoi ?! Common Dialog fait crasher DirectDraw ?
    Par Magus (Dave) dans le forum DirectX
    Réponses: 4
    Dernier message: 21/10/2002, 19h01

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