wxPython中的控件布局

有两种方法来布置wxPython中的控件空间分布

 

1. 手动布置,即在每个控件的构造器中指定pos和size

 

#!/usr/bin/evn python
import wx
class MyFrame(wx.Frame):
    def __init__(self,parent,ID,title):
        wx.Frame.__init__(self,parent,ID,title,wx.DefaultPosition,wx.Size(250,50))
        panel=wx.Panel(self,-1)

        wx.Button(panel,-1,'Button1',pos=(0,0),size=(80,20))
        wx.Button(panel,-1,'Button2',pos=((80,0),size=(80,20))
        wx.Button(panel,-1,'Button3',pos=((160,0),size=(80,20))


class MyApp(wx.App):
    def OnInit(self):
        frame=MyFrame(None,-1,'layout.py')
        frame.Show(True)
        frame.Centre()

app = MyApp(0)
app.MainLoop()
这里的button都采用此方式。
2.采用布局管理器Sizer,常用的有
wx.BoxSizer
wx.StaticBoxSizer
wx.GridSizer
wx.GridBagSizer
以wx.BoxSizer为例来说明
class TestCheckBox(wx.Panel):
    def __init__(self, parent, log):
        self.log = log
        wx.Panel.__init__(self, parent, -1)
        st = wx.StaticText(self, -1, "This example demonstrates the wx.CheckBox control.")#, (10, 10))
        cb1 = wx.CheckBox(self, -1, "Apples")#, (65, 40), (150, 20), wx.NO_BORDER)
        cb2 = wx.CheckBox(self, -1, "Oranges")#, (65, 60), (150, 20), wx.NO_BORDER)
        cb2.SetValue(True)
        cb3 = wx.CheckBox(self, -1, "Pears")#, (65, 80), (150, 20), wx.NO_BORDER)
       
        cb4 = wx.CheckBox(self, -1, "3-state checkbox",
                          style=wx.CHK_3STATE|wx.CHK_ALLOW_3RD_STATE_FOR_USER)
        cb5 = wx.CheckBox(self, -1, "Align Right", style=wx.ALIGN_RIGHT)
       
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.AddMany( [ cb1,
                         cb2,
                         cb3,
                         (20,20),
                         cb4,
                         (20,20),
                         cb5
                         ])
        border = wx.BoxSizer(wx.VERTICAL)
        border.Add(st, 0, wx.ALL, 15)
        border.Add(sizer, 0, wx.LEFT, 50)
        self.SetSizer(border)
sizer = wx.BoxSizer(integer orient )
    BoxSizer的构造指定了水平或者竖直布局方向,对应参数分别为wx.HORIZONTAL和wx.VERTICAL
sizer的add函数定义如下:
    Add(wx.Window window,integer proportion=0,integer flag=0,integer border=0)
    proportion: 表示在布局定义方向上构件改变的比例。假设我们有三个按纽,它们的 proportion 属性分别为0、1和2。它们被加入一个水平的 wx.BoxSizer。proportion 参数为 0 的按纽根本不发生变化。而这个参数值为 2 的按纽在水平方向改变的程序将是参数值为 1 的那个按纽的两倍。
    flag: 控制构件的边框,我们可以以此来调节控件之间的间隔。可以使用 | 符号来连接它们。比如 wx.LEFT | wx.BOTTOM 。flag参数的值可以是:
wx.LEFT
wx.RIGHT
wx.BOTTOM
wx.TOP
wx.ALL
如果我们使用 wx.EXPAND 标识,我们的构件将占据所有分配给它的空间。最后,我们还可以定义构件的对齐方式。有以下几种:
wx.ALIGN_LEFT
wx.ALIGN_RIGHT
wx.ALIGN_TOP
wx.ALIGN_BOTTOM
wx.ALIGN_CENTER_VERTICAL
wx.ALIGN_CENTER_HORIZONTAL
wx.ALIGN_CENTER
    border: 边框的值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值