Mega Code Archive

 
Categories / Python Tutorial / Wxpython
 

Use GridSizer control

import wx class BlockWindow(wx.Panel):     def __init__(self, parent, ID=-1, label="", pos=wx.DefaultPosition, size=(100, 25)):         wx.Panel.__init__(self, parent, ID, pos, size, wx.RAISED_BORDER, label)         self.label = label         self.SetMinSize(size)         self.Bind(wx.EVT_PAINT, self.OnPaint)     def OnPaint(self, evt):         sz = self.GetClientSize()         dc = wx.PaintDC(self)         w,h = dc.GetTextExtent(self.label)         dc.SetFont(self.GetFont())         dc.DrawText(self.label, (sz.width-w)/2, (sz.height-h)/2)          labels = "1 2 3 4 5 6 7 8 9 0".split() class GridSizerFrame(wx.Frame):     def __init__(self):         wx.Frame.__init__(self, None, -1, "Grid Sizer")         sizer = wx.GridSizer(rows=3, cols=3, hgap=5, vgap=5)         for label in labels:             bw = BlockWindow(self, label=label)             sizer.Add(bw, 0, 0)         self.SetSizer(sizer)         self.Fit() app = wx.PySimpleApp() GridSizerFrame().Show() app.MainLoop()