wx.BoxSizer:
1.构造函数 boxSizer = wx.BoxSizer(integer orient) orient可以是wx.VERTICAL or wx.HORIZONTAL
2.向sizer里面增加一个控件。box.Add(wx.Window window, integer proportion=0, integer flag = 0, integer border = 0)
主要参数:
1.proportion:proportion参数定义了构件在既定方向上所占空间的比例,是相对的,相对于其他组件
2、flag:
常用的flag参数:
调整对其方式的flag:
wx.ALIGN_LEFT
wx.ALIGN_RIGHT
wx.ALIGN_TOP
wx.ALIGN_BOTTOM
wx.ALIGN_CENTER_VERTICAL
wx.ALIGN_CENTER_HORIZONTAL
wx.ALIGN_CENTER
- wx.TOP, wx.BOTTOM, wx.LEFT, wx.RIGHT, wx.ALL
wx.StaticText控件的构造函数参数有:
---------------------------------------------------
parent:父窗口部件。
id:标识符。使用-1可以自动创建一个唯一的标识。
label:你想显示在静态控件中的文本。
pos:一个wx.Point或一个Python元组,它是窗口部件的位置。
size:一个wx.Size或一个Python元组,它是窗口部件的尺寸。
style:样式标记。
name:对象的名字,用于查找的需要。
---------------------------------------------------
其中样式style的取值有:
wx.ALIGN_CENTER:静态文本位于静态文本控件的中心。
wx.ALIGN_LEFT:文本在窗口部件中左对齐。这是默认的样式。
wx.ALIGN_RIGHT:文本在窗口部件中右对齐。
wx.ST_NO_AUTORESIZE:如果使用了这个样式,那么在使用了SetLabel()改变文本
wx.TextCtrl的构造函数
wx.TextCtrl(parent,
id,
value='',
pos=wx.DefaultPostion,
size=wx.DefaultSize,
style=0,
validator=wx.DefaultValidator,
name=wx.TextCtrlNameStr)
---------------------------------------------------
parent:父窗口部件
id:标识符。使用-1可以自动创建一个唯一的标识。
value:显示的内容
pos:一个wx.Point或一个Python元组,它是窗口部件的位置。
size:一个wx.Size或一个Python元组,它是窗口部件的尺寸。
style:样式标记
validator:赋予textctrl的内容校验器
name:对象的名字,用于查找的需要。
---------------------------------------------------
其中基本样式的取值有:
wx.TE_CENTER:控件中的文本居中。
wx.TE_LEFT:控件中的文本左对齐。默认行为。
wx.TE_NOHIDESEL:文本始终高亮显示,只适用于Windows。
wx.TE_PASSWORD:不显示所键入的文本,代替以星号显示。
wx.TE_PROCESS_ENTER:如果使用了这个样式,那么当用户在控件内按下回车
键时,一个文本输入事件被触发。否则,按键事件内在的由该文本控件或该对话框管
理。
wx.TE_PROCESS_TAB:如果指定了这个样式,那么通常的字符事件在Tab键按下
时创建(一般意味一个制表符将被插入文本)。否则,tab由对话框来管理,通常是
控件间的切换。
wx.TE_READONLY:文本控件为只读,用户不能修改其中的文本。
wx.TE_RIGHT:控件中的文本右对齐。
FlexGridSizer是GridSizer的一个更灵活的版本。它与标准的GridSizer几乎相同,除了下面3点例外: 1、每行和每列可以有各自的尺寸。
2、默认情况下,当尺寸调整时,它行和列整体改变尺寸。所以,如果需要的话,你可以指定哪行或哪列应该增长。
3、它可以在两个方向灵活地增长,意思是你可以为个别的子元素指定比列量,并且你可以指定固定方向增长上的行为。
1. 构造函数:
wx.FlexGridSizer(int rows=1, int cols=0, int vgap=0, int hgap=0)
参数: rows 定义GridSizer 行数
cols 定义GridSizer 列数
vgap 定义垂直方向上行间距
hgap 定义水平方向上列间距
2. FlexGridSizer的常用函数
AddGrowableCol(idx, proportion=0) 设定索引为idx的列为可增长列
AddGrowableRow(idx, proportion=0) 设定索引为idx的行为可增长行
参数:proportion=0 为默认,表示所有的可增长行或列 按照同比列缩放。如果要指定不一样的缩放比例,那么需要手动设置proportion 值。例如,如 果你有两个尺寸可调整的行,并且它们的proportion分别是2和1,那么这第一个行将得到新空间的2/3,第二行将得到 1/3。
wx.Combobox由一个编辑框和列表组成。它可以显示为带有可编辑或只读文本框的静态列表,也可以显示为带下拉列表的文本区域,或者是不带文本框的下拉列表。一个wx.Combobox只允许单选。wx.Combobox的选择项从0开始编号。如果你需要定制wx.Combobox,可以参照wx.ComboCtrl,wx.OwnerDrawnComboBox,wx.ComboPopup和即将可用的wx.BitmapComBox等控件。
1. Style 样式
wx.CB_SIMPLE 创建一个带列表显示的combobox.只支持windows
wx.CB_DROPDOWN 创建一个带下拉列表的combobox
wx.CB_READONLY 同wx.CB_DROPDOWN,但只有被当做combobox选择项的字符串才能被选定,不在选择列表中的字符串无法将无法填入控件中的文本框。
wx.CB_SORT 列表项按字母序排序
wx.TE_PROCES_ENTER 此样式下控件会产生事件wx.EVT_COMMAND_TEXT_ENTER(否则按下Enter键要么被控件内部处理,要么被用于控件导航)。仅支持windows。
2. 事件
EVT_COMBOBOX(id,func) //当列表中的一个项被选择时,处理wx.EVT_COMMAND_COMBOBOX_SELECTED事件。注意到调用GetValue返回的是选择后的值。
EVT_TEXT(id,func) //当combobox文本改变时,处理wx.EVT_COMMAND_TEXT_UPDATED事件
EVT_TEXT_ENTER(id,func) //当在combobox中按下回车键时,处理wx.EVT_TEXT_ENTER事件。
1. ScrolledPanel类,wx.ScrolledWindow的子类之一。提供了自动滚动条和滚动行为。此外也提供了wx.ScrolledWindow不具有的标签遍历管理功能(tab traversal management)
2. 方法集
SetupScrolling(self, scroll_x, scroll_y, rate_x, rate_y, scrollToTop)该方法需要显示调用,绑定必须的的事件去完成适合的滚动
wx.Grid 及其相关的类是用来显示和编辑类表格样式的数据。该控件为显示,编辑数据源提及交互供了丰富的特征。
wx.GridTableBase类控制要显示的实际数据。可以call CreateGrid()产生一个该类的实例对象。
wx.GridCellRenderer 基类,负责对单元格进行绘画。现在提供了默认的几种派生。
- wxGridCellBoolRenderer 显示CheckBox样式
- wxGridCellFloatRenderer
- wxGridCellNumberRenderer
- wxGridCellStringRenderer
wx.GridCellEditor 基类,负责在cell editing状态下,显示对应的控件。现在提供了默认的几种派生。
- wxGridCellBoolEditor
- wxGridCellChoiceEditor
- wxGridCellFloatEditor
- wxGridCellNumberEditor
- wxGridCellTextEditor
如何添加、删除行,列和单元格?
本例中使用SetTable() 作为grid 的数据源。 那么重点来研究在这个情况下如何对grid 和 数据源进行增删改。
GridTableMessage 类,可以用来向表发送一些message,本例中 是对行的增删改操作, 那么我们只需要用其中的3个message:
GRIDTABLE_NOTIFY_ROWS_INSERTED 行插入的消息
GRIDTABLE_NOTIFY_ROWS_APPENDED 附近新行的消息
GRIDTABLE_NOTIFY_ROWS_DELETED 删除行的消息
GRIDTABLE_REQUEST_VIEW_GET_VALUES cell 值如果有更改的消息
1.在index插入一新行
grd.GridTableMessage(self,
grd.GRIDTABLE_NOTIFY_ROWS_INSERTED
,index 改行所在的索引
,1 插入一行记录
)
2. 删除rowIndex行
grd.GridTableMessage(self,grd.GRIDTABLE_NOTIFY_ROWS_DELETED,
rowIndex, 改行所在的索引
1 只删除一行
)
3. 附加一新行
grd.GridTableMessage(self,
grd.GRIDTABLE_NOTIFY_ROWS_APPENDED,
1 附近的新行个数
)