天天看点

wx图形化的尺寸器布局

# -*- coding:utf-8 -*-

'''
之前的组件由于是通过pos参数确定位置,而不会根据主组件的改变而改变,是固定死的,不灵活
所以我们需要使各组件随主框架的改变而改变

wxpython 尺寸器布局
    自适应:按照比例来布局
    1.尺寸器不会放在窗口组件上,而是放在Panel(画布)上
    2.尺寸器(BoxSizer)
        1.水平尺寸器(默认的)
        2.垂直尺寸器(VERTICAL)
        3.尺寸器的一些参数
                内容、占比例、填充的样式和方向、边框
    3.同一个画布上可以拥有N个尺寸器,但必须要有一个主尺寸器,尺寸器可以嵌套
'''

#--------------------------------------------------------------------------
# 参数设置说明:
#   1.proportion  在当前尺寸器当中占有的相对比例
#   2.flag        填充的样式,参数如下:
#         1.wx.EXPAND 在进行填充
#         2.wx.ALL    wx.LIFT   wx.RIGHT   wx.TOP   wx.BOTTOM  填充的方向
#         3.这两个参数要通过管道符号连接
#   3.border      指的是边框线
#

import wx

app = wx.App()
frame = wx.Frame(None,title="MyFrame",size = (,))
panel = wx.Panel(frame)     #创建画布,以主窗口为父
but1 = wx.Button(panel,label="save")    #以画布为父类
but2 = wx.Button(panel,label="back")
pathText = wx.TextCtrl(panel)   #以画布为父类
content = wx.TextCtrl(panel)

#声明尺寸器
sBox = wx.BoxSizer()               #水平尺寸器,不带参数则为默认的水平尺寸器
vBox = wx.BoxSizer(wx.VERTICAL)    #垂直尺寸器

#给尺寸器添加组件,从左往右,从上到下
sBox.Add(pathText,proportion = ,flag = wx.EXPAND|wx.ALL,border = )
sBox.Add(but1,proportion = ,flag = wx.EXPAND|wx.ALL,border = )
sBox.Add(but2,proportion = ,flag = wx.EXPAND|wx.ALL,border = )

vBox.Add(sBox,proportion = ,flag = wx.EXPAND|wx.ALL,border = )
vBox.Add(content,proportion = ,flag = wx.EXPAND|wx.ALL,border = )

#设置主尺寸
panel.SetSizer(vBox) #因为sBox被嵌套在vBox上,所以以vBox为主尺寸

frame.Show()  #因为文本组件和按钮组件都是以窗框组件为父组件,所以只需要调用frame
app.MainLoop()