wxPython控件学习

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(selfscroll_xscroll_yrate_xrate_yscrollToTop)该方法需要显示调用,绑定必须的的事件去完成适合的滚动

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 附近的新行个数
)


你可能感兴趣的:(python)