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() |
Partager