您的位置:首页 > 编程语言 > Python开发

wxPython BoxSizer

2014-08-19 16:56 127 查看
这是比较常见的介绍wxPython BoxSizer的示例代码,但我看到的翻译都很糟糕,都不知所云。所以我仔细研究了一下,写下自己的看法。

import wx
class Example(wx.Frame):
def __init__(self,parent,title):
super(Example,self).__init__(parent,title=title,size=(500,300))
self.InitUI()
self.Centre()
self.Show()
def InitUI(self):
panel = wx.Panel(self)

font = wx.SystemSettings_GetFont(wx.SYS_SYSTEM_FONT)
font.SetPointSize(9)

vbox = wx.BoxSizer(wx.VERTICAL)

hbox1 = wx.BoxSizer(wx.HORIZONTAL)
st1 = wx.StaticText(panel,label='项目目录:'.decode('utf-8'))
st1.SetFont(font)
hbox1.Add(st1,flag=wx.RIGHT,border=8)

tc = wx.TextCtrl(panel)
hbox1.Add(tc,proportion=1)
vbox.Add(hbox1,flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP,border=10)

vbox.Add((-1,10))

hbox3 = wx.BoxSizer(wx.HORIZONTAL)
tc2 = wx.TextCtrl(panel, style=wx.TE_MULTILINE)
hbox3.Add(tc2, proportion=1, flag=wx.EXPAND)
vbox.Add(hbox3, proportion=1, flag=wx.LEFT|wx.RIGHT|wx.EXPAND,
border=10)

vbox.Add((-1, 25))

hbox4 = wx.BoxSizer(wx.HORIZONTAL)
cb1 = wx.CheckBox(panel, label='Case Sensitive')
cb1.SetFont(font)
hbox4.Add(cb1)
cb2 = wx.CheckBox(panel, label='Nested Classes')
cb2.SetFont(font)
hbox4.Add(cb2, flag=wx.LEFT, border=10)
cb3 = wx.CheckBox(panel, label='Non-Project classes')
cb3.SetFont(font)
hbox4.Add(cb3, flag=wx.LEFT, border=10)
vbox.Add(hbox4, flag=wx.LEFT, border=10)

vbox.Add((-1, 25))

hbox5 = wx.BoxSizer(wx.HORIZONTAL)
btn1 = wx.Button(panel, label='Ok', size=(70, 30))
hbox5.Add(btn1)
btn2 = wx.Button(panel, label='Close', size=(70, 30))
hbox5.Add(btn2, flag=wx.LEFT|wx.BOTTOM, border=5)
vbox.Add(hbox5, flag=wx.ALIGN_RIGHT|wx.RIGHT, border=10)

panel.SetSizer(vbox)

if __name__ == '__main__':
app = wx.App()
Example(None,title="RedMineHelper")
app.MainLoop()


这个代码是创造了一个类。
重点从InitUI这个函数开始看。

先是创造了一个Panel。

然后设置字体。

再然后创造了一个垂直的BoxSizer。我的理解是,垂直的BoxSizer里面放置的东西都是竖着放的,后一个在前一个的下面。

同理,水平BoxSizer里面放置的东西就是横着放的,后一个在前一个的右面。

所以,刚刚创建的垂直BoxSizer里面放着的5个水平BoxSizer是竖着放的。

第一个水平BoxSizer,是静态文字。flag参数,定义了这个BoxSizer的那个边框会被设置为border的边框宽度,如这个第一个水平BoxSizer,它的右边有宽度为8

然后一个vbox.Add((-1,10)),添加了10个像素的空白空间
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  wxPython BoxSizer