The wx.GridSizer lays out widgets in two dimensional table. Each cell within the table has the same size.
wx.GridSizer(int rows=1, int cols=0, int vgap=0, int hgap=0)
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 | import wx class Example(wx.Frame): def __init__( self , parent, title): super (Example, self ).__init__(parent, title = title, size = ( 300 , 250 )) self .InitUI() self .Centre() self .Show() def InitUI( self ): menubar = wx.MenuBar() fileMenu = wx.Menu() menubar.Append(fileMenu, '&File' ) self .SetMenuBar(menubar) vbox = wx.BoxSizer(wx.VERTICAL) self .display = wx.TextCtrl( self , style = wx.TE_RIGHT) vbox.Add( self .display, flag = wx.EXPAND|wx.TOP|wx.BOTTOM, border = 4 ) gs = wx.GridSizer( 5 , 4 , 5 , 5 ) gs.AddMany( [(wx.Button( self , label = 'Cls' ), 0 , wx.EXPAND), (wx.Button( self , label = 'Bck' ), 0 , wx.EXPAND), (wx.StaticText( self ), wx.EXPAND), (wx.Button( self , label = 'Close' ), 0 , wx.EXPAND), (wx.Button( self , label = '7' ), 0 , wx.EXPAND), (wx.Button( self , label = '8' ), 0 , wx.EXPAND), (wx.Button( self , label = '9' ), 0 , wx.EXPAND), (wx.Button( self , label = '/' ), 0 , wx.EXPAND), (wx.Button( self , label = '4' ), 0 , wx.EXPAND), (wx.Button( self , label = '5' ), 0 , wx.EXPAND), (wx.Button( self , label = '6' ), 0 , wx.EXPAND), (wx.Button( self , label = '*' ), 0 , wx.EXPAND), (wx.Button( self , label = '1' ), 0 , wx.EXPAND), (wx.Button( self , label = '2' ), 0 , wx.EXPAND), (wx.Button( self , label = '3' ), 0 , wx.EXPAND), (wx.Button( self , label = '-' ), 0 , wx.EXPAND), (wx.Button( self , label = '0' ), 0 , wx.EXPAND), (wx.Button( self , label = '.' ), 0 , wx.EXPAND), (wx.Button( self , label = '=' ), 0 , wx.EXPAND), (wx.Button( self , label = '+' ), 0 , wx.EXPAND) ]) vbox.Add(gs, proportion = 1 , flag = wx.EXPAND) self .SetSizer(vbox) if __name__ = = '__main__' : app = wx.App() Example( None , title = 'Calculator' ) app.MainLoop() |