使用sizer后,mainFrame的大小由sizer的孩子决定
grid sizer:
最简单的一个种sizer,各个栅的大小相同,栅的最大大小取决以栅中最大孩子的尺寸(当一个sizer被创建时,它根据它的孩子的综合的最小尺寸(最小的宽度和最小的高度)隐含地创建一个最小尺寸。),如果一个栅没有孩子,不会占有效空间的.gridsizer不会限制孩子的个数的,即使在开始声明也是一样
=========================
flex grid sizer
默认情况下,当尺寸调整时,它不改变它的单元格的尺寸。
可以指定某方向上的行为(以行或列为其它单位,gridsizer是以整体为单位),每个栅的宽度是该列中宽度最大的项目的宽度,它们的高度是该行中宽度最高的项目的宽度。显式地告诉该sizer该行或列是可扩展的:
当窗体大小变化时,需要显式地告诉该sizer该行或列是可扩展的:
AddGrowableCol(idx, proportion=0)
AddGrowableRow(idx, proportion=0)
SetFlexibleDirection(direction)
SetNonFlexibleGrowMode(mode)
=========================
grid bag sizer
1、能够将一个窗口部件添加到一个特定的单元格。(如果一个栅没有孩子,会占有效空间的)
2、能够使一个窗口部件跨越几个单元格(就像HTML表单中的表格所能做的一样)。
注意这里的Add()方法与以前的看起来有点不同 :
1 Add(window, pos, span=wx.DefaultSpan, flag=0, border=0, userData=None)
2 Add(sizer, pos, span=wx.DefaultSpan, flag=0, border=0, userData=None)
3 Add(size, pos, span=wx.DefaultSpan, flag=0, border=0, userData=None)
4 AddItem(item)
比其它sizer多了一个位置参数:因为它为孩子预留了空间
============== 下面是通用方法 ================
sizer对象的构造方法有两个比较重要的参数:
flag:窗体风格,对齐方式,边框位置
proportion:如果使用窗体大小变化时的空间使用,为一个比例值
孩子指定一个最小的尺寸
窗口的方法
SetMinSize(width, height)
SetSizeHints(minW, minH, maxW, maxH)
使用sizer的SetItemMinSize()方法。它也有三个形式:
SetItemMinSize(window, size)
SetItemMinSize(sizer, size)
SetItemMinSize(index, size)
对sizer添加或移除孩子:
Add(window, proportion=0, flag=0, border=0, userData=None)
Add(sizer, proportion=0, flag=0, border=0, userData=None)
Add(size, proportion=0, flag=0, border=0, userData=None)
Insert(index, window, proportion=0, flag=0, border=0, userData=None)
Insert(index, sizer, proportion=0, flag=0, border=0, userData=None)
Insert(index, size, proportion=0, flag=0, border=0, userData=None)
Prepend(window, proportion=0, flag=0, border=0, userData=None)
Prepend(sizer, proportion=0, flag=0, border=0, userData=None)
Prepend(size, proportion=0, flag=0, border=0, userData=None)
Detach(window)
Detach(sizer)
Detach(index)
管理它的孩子的尺寸和对齐的
调整grid sizer的大小时,每个部件之间的间隙将随之改变,但是默认情况下,窗口部件的尺寸不会变,并且始终按左上角依次排列
添加一个窗口部件到sizer时,可以通过给flag参数一个特定值来调整该窗口部件的尺寸改变行为。
wx.ALIGN_BOTTOM:按照窗口部件被分配的空间(格子)的底部对齐。
wx.ALIGN_CENTER:放置窗口部件,使窗口部件的中心处于其所分配的空间的中心。
wx.ALIGN_CENTER_HORIZONTAL:在它所处的格子中,水平居中。
wx.ALIGN_CENTER_VERTICAL :在它所处的格子中,垂直居中。
wx.ALIGN_LEFT:靠着它所处的格子左边缘。这是默认行为。
wx.ALIGN_TOP:靠着它所处的格子的上边缘。这是默认的行为。
wx.EXPAND:填满它所处的格子空间。
wx.FIXED_MINSIZE:保持固定项的最小尺寸。
wx.GROW:与wx.EXPAND相同。但比之少两个字符,节约了时间。
wx.SHAPED:窗口部件的尺寸改变时,只在一个方向上填满格子,另一个方向上按窗口部件原先的形状尺寸的比列填充。什么方向的sizer就向什么方向增长
管理每个孩子的边框
边框是连续数量的空白空间,方向有:wx.BOTTOM, wx.LEFT, wx.RIGHT, wx.TOP
传递了边框信息到flags参数后,也需要传递边框宽度的像素值给border参数 ,为边框的大小
http://sellroad.w58.ws86.com/jessinio/?p=512标签: Python, sizer, wxPython, wxWidgets