📄 sizers.py
字号:
# 11/26/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o Had to do a bit of rework for the demo; there was no panel attached
# to the demo window, so all buttons were showing as dark gray on
# dark gray. I have no idea why this didn't break before. Robin,
# please examine my changes to ensure you approve. It's rather
# hackish looking.
#
#----------------------------------------------------------------------
# sizer test code
#----------------------------------------------------------------------
import wx
#----------------------------------------------------------------------
class SampleWindow(wx.PyWindow):
"""
A simple window that is used as sizer items in the tests below to
show how the various sizers work.
"""
def __init__(self, parent, text, pos=wx.DefaultPosition, size=wx.DefaultSize):
wx.PyWindow.__init__(self, parent, -1,
#style=wx.RAISED_BORDER
#style=wx.SUNKEN_BORDER
style=wx.SIMPLE_BORDER
)
self.text = text
if size != wx.DefaultSize:
self.bestsize = size
else:
self.bestsize = (80,25)
self.SetSize(self.GetBestSize())
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.Bind(wx.EVT_SIZE, self.OnSize)
self.Bind(wx.EVT_LEFT_UP, self.OnCloseParent)
def OnPaint(self, evt):
sz = self.GetSize()
dc = wx.PaintDC(self)
w,h = dc.GetTextExtent(self.text)
dc.Clear()
dc.DrawText(self.text, (sz.width-w)/2, (sz.height-h)/2)
def OnSize(self, evt):
self.Refresh()
def OnCloseParent(self, evt):
p = wx.GetTopLevelParent(self)
if p:
p.Close()
def DoGetBestSize(self):
return self.bestsize
#----------------------------------------------------------------------
def makeSimpleBox1(win):
box = wx.BoxSizer(wx.HORIZONTAL)
box.Add(SampleWindow(win, "one"), 0, wx.EXPAND)
box.Add(SampleWindow(win, "two"), 0, wx.EXPAND)
box.Add(SampleWindow(win, "three"), 0, wx.EXPAND)
box.Add(SampleWindow(win, "four"), 0, wx.EXPAND)
return box
#----------------------------------------------------------------------
def makeSimpleBox2(win):
box = wx.BoxSizer(wx.VERTICAL)
box.Add(SampleWindow(win, "one"), 0, wx.EXPAND)
box.Add(SampleWindow(win, "two"), 0, wx.EXPAND)
box.Add(SampleWindow(win, "three"), 0, wx.EXPAND)
box.Add(SampleWindow(win, "four"), 0, wx.EXPAND)
return box
#----------------------------------------------------------------------
def makeSimpleBox3(win):
box = wx.BoxSizer(wx.HORIZONTAL)
box.Add(SampleWindow(win, "one"), 0, wx.EXPAND)
box.Add(SampleWindow(win, "two"), 0, wx.EXPAND)
box.Add(SampleWindow(win, "three"), 0, wx.EXPAND)
box.Add(SampleWindow(win, "four"), 0, wx.EXPAND)
box.Add(SampleWindow(win, "five"), 1, wx.EXPAND)
return box
#----------------------------------------------------------------------
def makeSimpleBox4(win):
box = wx.BoxSizer(wx.HORIZONTAL)
box.Add(SampleWindow(win, "one"), 0, wx.EXPAND)
box.Add(SampleWindow(win, "two"), 0, wx.EXPAND)
box.Add(SampleWindow(win, "three"), 1, wx.EXPAND)
box.Add(SampleWindow(win, "four"), 1, wx.EXPAND)
box.Add(SampleWindow(win, "five"), 1, wx.EXPAND)
return box
#----------------------------------------------------------------------
def makeSimpleBox5(win):
box = wx.BoxSizer(wx.HORIZONTAL)
box.Add(SampleWindow(win, "one"), 0, wx.EXPAND)
box.Add(SampleWindow(win, "two"), 0, wx.EXPAND)
box.Add(SampleWindow(win, "three"), 3, wx.EXPAND)
box.Add(SampleWindow(win, "four"), 1, wx.EXPAND)
box.Add(SampleWindow(win, "five"), 1, wx.EXPAND)
return box
#----------------------------------------------------------------------
def makeSimpleBox6(win):
box = wx.BoxSizer(wx.HORIZONTAL)
box.Add(SampleWindow(win, "one"), 1, wx.ALIGN_TOP)
box.Add(SampleWindow(win, "two"), 1, wx.EXPAND)
box.Add(SampleWindow(win, "three"), 1, wx.ALIGN_CENTER)
box.Add(SampleWindow(win, "four"), 1, wx.EXPAND)
box.Add(SampleWindow(win, "five"), 1, wx.ALIGN_BOTTOM)
return box
#----------------------------------------------------------------------
def makeSimpleBox7(win):
box = wx.BoxSizer(wx.HORIZONTAL)
box.Add(SampleWindow(win, "one"), 0, wx.EXPAND)
box.Add(SampleWindow(win, "two"), 0, wx.EXPAND)
box.Add(SampleWindow(win, "three"), 0, wx.EXPAND)
box.Add((60, 20), 0, wx.EXPAND)
box.Add(SampleWindow(win, "five"), 1, wx.EXPAND)
return box
#----------------------------------------------------------------------
def makeSimpleBox8(win):
box = wx.BoxSizer(wx.VERTICAL)
box.Add(SampleWindow(win, "one"), 0, wx.EXPAND)
box.Add((0,0), 1)
box.Add(SampleWindow(win, "two"), 0, wx.ALIGN_CENTER)
box.Add((0,0), 1)
box.Add(SampleWindow(win, "three"), 0, wx.EXPAND)
box.Add(SampleWindow(win, "four"), 0, wx.EXPAND)
# box.Add(SampleWindow(win, "five"), 1, wx.EXPAND)
return box
#----------------------------------------------------------------------
#----------------------------------------------------------------------
def makeSimpleBorder1(win):
bdr = wx.BoxSizer(wx.HORIZONTAL)
btn = SampleWindow(win, "border")
btn.SetSize((80, 80))
bdr.Add(btn, 1, wx.EXPAND|wx.ALL, 15)
return bdr
#----------------------------------------------------------------------
def makeSimpleBorder2(win):
bdr = wx.BoxSizer(wx.HORIZONTAL)
btn = SampleWindow(win, "border")
btn.SetSize((80, 80))
bdr.Add(btn, 1, wx.EXPAND | wx.EAST | wx.WEST, 15)
return bdr
#----------------------------------------------------------------------
def makeSimpleBorder3(win):
bdr = wx.BoxSizer(wx.HORIZONTAL)
btn = SampleWindow(win, "border")
btn.SetSize((80, 80))
bdr.Add(btn, 1, wx.EXPAND | wx.NORTH | wx.WEST, 15)
return bdr
#----------------------------------------------------------------------
#----------------------------------------------------------------------
def makeBoxInBox(win):
box = wx.BoxSizer(wx.VERTICAL)
box.Add(SampleWindow(win, "one"), 0, wx.EXPAND)
box2 = wx.BoxSizer(wx.HORIZONTAL)
box2.Add(SampleWindow(win, "two"), 0, wx.EXPAND)
btn3 = SampleWindow(win, "three")
box2.Add(btn3, 0, wx.EXPAND)
box2.Add(SampleWindow(win, "four"), 0, wx.EXPAND)
box2.Add(SampleWindow(win, "five"), 0, wx.EXPAND)
box3 = wx.BoxSizer(wx.VERTICAL)
box3.AddMany([ (SampleWindow(win, "six"), 0, wx.EXPAND),
(SampleWindow(win, "seven"), 2, wx.EXPAND),
(SampleWindow(win, "eight"), 1, wx.EXPAND),
(SampleWindow(win, "nine"), 1, wx.EXPAND),
])
box2.Add(box3, 1, wx.EXPAND)
box.Add(box2, 1, wx.EXPAND)
box.Add(SampleWindow(win, "ten"), 0, wx.EXPAND)
##box.Hide(btn3)
return box
#----------------------------------------------------------------------
def makeBoxInBorder(win):
bdr = wx.BoxSizer(wx.HORIZONTAL)
box = makeSimpleBox3(win)
bdr.Add(box, 1, wx.EXPAND | wx.ALL, 15)
return bdr
#----------------------------------------------------------------------
def makeBorderInBox(win):
insideBox = wx.BoxSizer(wx.HORIZONTAL)
box2 = wx.BoxSizer(wx.HORIZONTAL)
box2.AddMany([ (SampleWindow(win, "one"), 0, wx.EXPAND),
(SampleWindow(win, "two"), 0, wx.EXPAND),
(SampleWindow(win, "three"), 0, wx.EXPAND),
(SampleWindow(win, "four"), 0, wx.EXPAND),
(SampleWindow(win, "five"), 0, wx.EXPAND),
])
insideBox.Add(box2, 0, wx.EXPAND)
bdr = wx.BoxSizer(wx.HORIZONTAL)
bdr.Add(SampleWindow(win, "border"), 1, wx.EXPAND | wx.ALL)
insideBox.Add(bdr, 1, wx.EXPAND | wx.ALL, 20)
box3 = wx.BoxSizer(wx.VERTICAL)
box3.AddMany([ (SampleWindow(win, "six"), 0, wx.EXPAND),
(SampleWindow(win, "seven"), 2, wx.EXPAND),
(SampleWindow(win, "eight"), 1, wx.EXPAND),
(SampleWindow(win, "nine"), 1, wx.EXPAND),
])
insideBox.Add(box3, 1, wx.EXPAND)
outsideBox = wx.BoxSizer(wx.VERTICAL)
outsideBox.Add(SampleWindow(win, "top"), 0, wx.EXPAND)
outsideBox.Add(insideBox, 1, wx.EXPAND)
outsideBox.Add(SampleWindow(win, "bottom"), 0, wx.EXPAND)
return outsideBox
#----------------------------------------------------------------------
def makeGrid1(win):
gs = wx.GridSizer(3, 3, 2, 2) # rows, cols, vgap, hgap
gs.AddMany([ (SampleWindow(win, 'one'), 0, wx.EXPAND),
(SampleWindow(win, 'two'), 0, wx.EXPAND),
(SampleWindow(win, 'three'), 0, wx.EXPAND),
(SampleWindow(win, 'four'), 0, wx.EXPAND),
(SampleWindow(win, 'five'), 0, wx.EXPAND),
#(75, 50),
(SampleWindow(win, 'six'), 0, wx.EXPAND),
(SampleWindow(win, 'seven'), 0, wx.EXPAND),
(SampleWindow(win, 'eight'), 0, wx.EXPAND),
(SampleWindow(win, 'nine'), 0, wx.EXPAND),
])
return gs
#----------------------------------------------------------------------
def makeGrid2(win):
gs = wx.GridSizer(3, 3) # rows, cols, vgap, hgap
box = wx.BoxSizer(wx.VERTICAL)
box.Add(SampleWindow(win, 'A'), 0, wx.EXPAND)
box.Add(SampleWindow(win, 'B'), 1, wx.EXPAND)
gs2 = wx.GridSizer(2,2, 4, 4)
gs2.AddMany([ (SampleWindow(win, 'C'), 0, wx.EXPAND),
(SampleWindow(win, 'E'), 0, wx.EXPAND),
(SampleWindow(win, 'F'), 0, wx.EXPAND),
(SampleWindow(win, 'G'), 0, wx.EXPAND)])
gs.AddMany([ (SampleWindow(win, 'one'), 0, wx.ALIGN_RIGHT | wx.ALIGN_BOTTOM),
(SampleWindow(win, 'two'), 0, wx.EXPAND),
(SampleWindow(win, 'three'), 0, wx.ALIGN_LEFT | wx.ALIGN_BOTTOM),
(SampleWindow(win, 'four'), 0, wx.EXPAND),
(SampleWindow(win, 'five'), 0, wx.ALIGN_CENTER),
(SampleWindow(win, 'six'), 0, wx.EXPAND),
(box, 0, wx.EXPAND | wx.ALL, 10),
(SampleWindow(win, 'eight'), 0, wx.EXPAND),
(gs2, 0, wx.EXPAND | wx.ALL, 4),
])
return gs
#----------------------------------------------------------------------
def makeGrid3(win):
gs = wx.FlexGridSizer(3, 3, 2, 2) # rows, cols, vgap, hgap
gs.AddMany([ (SampleWindow(win, 'one'), 0, wx.EXPAND),
(SampleWindow(win, 'two'), 0, wx.EXPAND),
(SampleWindow(win, 'three'), 0, wx.EXPAND),
(SampleWindow(win, 'four'), 0, wx.EXPAND),
#(SampleWindow(win, 'five'), 0, wx.EXPAND),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -