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 :

MàJ taille ScrolledWindow


Sujet :

wxPython

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 15
    Par défaut MàJ taille ScrolledWindow
    Bonjour,

    J'ai un petit soucis avec la mise à jour de la taille d'un ScrolledWindow.

    En cliquant sur un bouton, un sizer est créé est rajouté à un sizer existant (lui même dans un ScrolledWindow).
    Mais celui-ci ne se met pas à jour, c'est à dire que la taille des sizers diminue pour se partager l'espace dispo, plutot que
    d'"étirer" le ScrolledWindow..
    Tout se met à jour quand j'agrandis la fenêtre, j'aimerais obtenir ce résultat.

    J'ai essayé plein de trucs, des Update(), Refresh(), Layout() mais rien n'y fait.

    Ca doit être tout simple, mais je trouve pas !

    mon 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
    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
     
    # -*- coding: utf8 -*-
    #!/usr/bin/python
     
    import wx
     
    class Frame(wx.Frame):
     
        def __init__(self, parent, id, title):
     
            wx.Frame.__init__(self, parent, id, title, size=(400, 300))
     
            self.panel = wx.Panel(self, -1)
     
            self.compteur = 0
     
            """
            Un ScrolledWindow dans lequel on place horizontalement
            des listbox encadrés avec un staticboxsizer,
            le tout encadré dans un staticboxsizer
            """
            staticbox_choix_etats = wx.StaticBox(self.panel, -1, u"Choix :")
            self.scrolled_window_choix_etats = wx.ScrolledWindow(self.panel, -1)
            self.scrolled_window_choix_etats.SetScrollbars(20,20,55,40)
     
            staticBoxSizer_choix_etats = wx.StaticBoxSizer(staticbox_choix_etats, wx.HORIZONTAL)
            staticBoxSizer_choix_etats.Add(self.scrolled_window_choix_etats, 1, wx.EXPAND)
     
            self.h_sizer_elements = wx.BoxSizer(wx.HORIZONTAL)
            self.ajouter_widget_element(self.h_sizer_elements)
            self.ajouter_widget_element(self.h_sizer_elements)
            self.ajouter_widget_element(self.h_sizer_elements)
     
            self.scrolled_window_choix_etats.SetSizer(self.h_sizer_elements)
     
     
            """
            Un sizer vertical dans lequel on met le celui décrit plus haut, plus un bouton.
            """
            v_sizer = wx.BoxSizer(wx.VERTICAL)
            v_sizer.Add(staticBoxSizer_choix_etats, 1, wx.EXPAND | wx.ALL, 10)
            self.bouton_ajouter_config = wx.Button(self.panel, -1, "Ajouter")
            v_sizer.Add(self.bouton_ajouter_config, 0, wx.BOTTOM | wx.LEFT | wx.RIGHT, 10)
     
     
            ## on attache le v_sizer au self.panel
            self.panel.SetSizer(v_sizer)
     
            self.bouton_ajouter_config.Bind(wx.EVT_BUTTON, self.onClicBoutonAjouterConfig)
     
            ## et on montre la frame
            self.Show(True)
     
        def ajouter_widget_element(self, sizer_dest):
            """Méthode qui ajoute un sizer avec un listbox dans 'sizer_dest'"""
     
            self.compteur += 1
     
            staticBox_liste = wx.StaticBox(self.scrolled_window_choix_etats, -1, u"Liste %s" % self.compteur)
            listBox_liste = wx.ListBox(self.scrolled_window_choix_etats, -1, choices=[], size=(200, 40))
            staticBoxSizer_liste = wx.StaticBoxSizer(staticBox_liste, wx.VERTICAL)
     
            staticBoxSizer_liste.Add(listBox_liste, 1, wx.EXPAND | wx.ALL, 5)
            sizer_dest.Add(staticBoxSizer_liste, 1, wx.EXPAND | wx.ALL, 5)
     
            return staticBoxSizer_liste
     
        def onClicBoutonAjouterConfig(self, event):
            """pour les besoins du test on l'utilise pour rajouter des éléments"""
            self.ajouter_widget_element(self.h_sizer_elements)
     
            self.scrolled_window_choix_etats.Layout()
     
     
     
    App = wx.App()
    Frame(None, -1, "")
    App.MainLoop()

  2. #2
    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
    Ton problème vient du paramètre proportion à 1 dans le placement de ton staticBoxSizer_liste à l'intérieur du h_sizer_elements.

    Remplace la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sizer_dest.Add(staticBoxSizer_liste, 1, wx.EXPAND | wx.ALL, 5)
    dans la méthode ajouter_widget_element() par la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sizer_dest.Add(staticBoxSizer_liste, 0, wx.EXPAND | wx.ALL, 5)
    et ça devrait fonctionner...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 36
    Par défaut
    Salut,

    J’ai eu le même problème que toi et j'ai réussis en faisant un Layout() sur le parent du boxsizer

    En espérant que cela peut t'aider
    Cordialement
    Jean-Michel

Discussions similaires

  1. Connaitre la taille de la RAM
    Par dway dans le forum Assembleur
    Réponses: 23
    Dernier message: 15/09/2004, 10h05
  2. taille maximale d'une base de donnée paradox
    Par Anonymous dans le forum Paradox
    Réponses: 5
    Dernier message: 14/02/2004, 17h39
  3. Réponses: 3
    Dernier message: 22/07/2002, 14h19
  4. taille du texte dans un viewport
    Par pitounette dans le forum OpenGL
    Réponses: 3
    Dernier message: 22/07/2002, 12h06
  5. comment réduire une image jpeg (taille x*y)
    Par don-diego dans le forum C
    Réponses: 4
    Dernier message: 14/07/2002, 20h06

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