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 :

Créer des boutons dynamiquement dans un wxGridBagSizer


Sujet :

wxPython

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2020
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2020
    Messages : 18
    Points : 8
    Points
    8
    Par défaut Créer des boutons dynamiquement dans un wxGridBagSizer
    bonjour à tous,
    je voudrais créer dynamiquement des buttons ou image buttons.
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     i = 0
            while i < 10:
     name = "button" + str(i)
        new_button = wx.Button(self.m_panel3, wx.ID_ANY, name=name)
                self.gbSizer3.Add(new_button, wx.GBPosition(0, 1 + i), wx.GBSpan(1, 1), wx.ALL, 5)
     
                i = i + 1
    Quand j'utilise WxFormBuilder et que j'épluche le code, je vois bien que c'est la propriété GBPosition qui définit sa position


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    self.m_button6 = wx.Button( self.m_panel3, wx.ID_ANY, u"MyButton", wx.DefaultPosition, wx.DefaultSize, 0 )
    		gbSizer3.Add( self.m_button6, wx.GBPosition( 0, 1 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )
     
    		self.m_button7 = wx.Button( self.m_panel3, wx.ID_ANY, u"MyButton", wx.DefaultPosition, wx.DefaultSize, 0 )
    		gbSizer3.Add( self.m_button7, wx.GBPosition( 0, 2 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )
     
    		self.m_button8 = wx.Button( self.m_panel3, wx.ID_ANY, u"MyButton", wx.DefaultPosition, wx.DefaultSize, 0 )
    		gbSizer3.Add( self.m_button8, wx.GBPosition( 0, 3 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )
    Donc je reproduis ceci avec mon wx.GBPosition(0, 1 + i) mais ça ne fonctionne pas. Les objets sont bien créer mais ils mettent visiblement au même endroit ... et non à la suite.

    Avez-vous une idée ?

  2. #2
    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
    Bonjour,

    J'ai pas testé mais il faudrait, je pense, que chaque bouton soit créé de façon indépendante dans une liste par exemple
    car tu créé toujours le même objet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    self.buttons=[]
    for i in range(10):
        self.buttons.append(wx.Button(self.m_panel3, wx.ID_ANY, name="button"+str(i)))
        self.gbSizer3.Add(self.buttons(i], wx.GBPosition(0, 1 + i), wx.GBSpan(1, 1), wx.ALL, 5))
    - Une boucle for est plus claire que le while..
    - l'indentation n'est pas conforme dans ton exemple
    - Il me semble qu'il te manque des bases du langage sur les boucles, les objets pour attaquer du wx,
    mais au moins si tu a un objectif.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2020
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2020
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Merci pour ta réponse,
    c'est une fonction que j'avais développé sous .Net, j'essaie de la reproduire sous python.
    bref en ce qui concerne la boucle lol oui je n'étais pas concentré sur la boucle elle même mais sur la création d'objet dynamique.
    à vrai dire que je n'ai jamais utilisé des boucle while dans aucun de mes programmes, seulement des boucles next.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2020
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2020
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    En faites je pense que ce que je veux faire n’est pas réalisable de la même façon en Wx.
    Je voudrais faire quelque chose de ce genre : https://lh3.googleusercontent.com/pr...ucIZZE9vF2H4uA seulement les photos mais du même genre.
    Avez-vous une idée si c’est possible et à partir de quel contrôle je pourrais le réaliser, ou du moins m'appuyer ?

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2020
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2020
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Visiblement un wxWrapSizer est plus adapté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    self.m_bpButton1 = wx.BitmapButton(self.m_scrolledWindow3, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition,
                                       wx.DefaultSize, wx.BU_AUTODRAW | 0)
    self.m_bpButton1.SetBitmap(wx.Bitmap(u"mypic.jpg", wx.BITMAP_TYPE_ANY))
    self.wSizer1.Add(self.m_bpButton1, 0, wx.ALL, 5)
     
    self.m_scrolledWindow3.Layout()
    self.wSizer1.Layout()
    Mes boutons sont bien ajoutés mais le scrolled n’est pas affiché !! Comment est-ce possible sachant que avec wxFormBuilder j’ai bel et bien ce scroll !!

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2020
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2020
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    J'ai trouvé, il fallait faire un refresh de la page tout simplement :

    Merci à toi alexdevl pour ton aide

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

Discussions similaires

  1. Créer des TPanel dynamiquement, dans un TGridPanelLayout.
    Par parda3 dans le forum Composants FMX
    Réponses: 10
    Dernier message: 23/05/2019, 10h35
  2. Réponses: 1
    Dernier message: 29/01/2016, 13h01
  3. Créer des TextBox dynamiquement dans un UserForm ?
    Par Hellgast dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 05/06/2014, 22h16
  4. Réponses: 5
    Dernier message: 19/02/2007, 15h44
  5. Creér des Clip dynamiquement dans la scène
    Par jpboogie dans le forum Flash
    Réponses: 2
    Dernier message: 04/10/2006, 16h47

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