⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sizers.py

📁 用wxPython编写GUI程序的样例代码
💻 PY
📖 第 1 页 / 共 2 页
字号:
# 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 + -