wxpython in action_wxPython in Action ( 网格(grid)控件7) (2008-05-19 13:37:24)

14.4 捕获用户事件网格控件有许多的用户事件。我们将把它们分为鼠标事件和键盘事件。

14.4.1 如何捕获用户的鼠标动作?

对于网格控件,除了不同的鼠标事件类型外,对于这些类型还有一些不同的事件类。最常用的事件类是wx.grid.GridEvent。网格的事件类是wx.CommandEvent的一个子类,它提供了用于获得事件详情的几个方法,如表14.8所示。

表14.8 wx.grid.GridEvent的方法

AltDown():当事件被触发时,如果alt键被按下了,则返回True。

ControlDown():当事件被触发时,如果control键被按下了,则返回True。

GetCol():返回发生事件的单元格所在的列的索引。

GetPosition():返回返回一个wx.Point。它代表事件发生点的逻辑坐标(以像素为单位)。

GetRow():返回发生事件的单元格所在的行的索引。

MetaDown():当事件被触发时,如果met键被按下了,则返回True。

Selecting():如果事件是一个被选事件,则返回True,如果事件是取消选择事件,则返回False。

ShiftDown():当事件被触发时,如果shift键被按下了,则返回True。

与wx.grid.GridEvent相关的有几个不同的事件类型。如表14.9所示。

表14.9 关于网格鼠标事件的单元格事件类型

wx.grid.EVT_GRID_CELL_CHANGE:当用户通过编辑器改变单元格中的数据时触发该事件。

wx.grid.EVT_GRID_CELL_LEFT_CLICK:当用户在一个单元格中敲击鼠标左键时触发该事件。

wx.grid.EVT_GRID_CELL_LEFT_DCLICK:当用户在一个单元格中双击鼠标左键时触发该事件。

wx.grid.EVT_GRID_CELL_RIGHT_CLICK:当用户在一个单元格中敲击鼠标右键时触发该事件。

wx.grid.EVT_GRID_CELL_RIGHT_DCLICK:当用户在一个单元格中双击鼠标右键时触发该事件。

wx.grid.EVT_GRID_EDITOR_HIDDEN:当在编辑会话结束时隐藏一个单元格编辑器则触发该事件。

wx.grid.EVT_GRID_EDITOR_SHOWN:当在编辑会话结束时显示一个单元格编辑器则触发该事件。

wx.grid.EVT_GRID_LABEL_LEFT_CLICK:当用户在行或列的标签区域敲击鼠标左键时触发该事件。

wx.grid.EVT_GRID_LABEL_LEFT_DCLICK:当用户在行或列的标签区域双击鼠标左键时触发该事件。

wx.grid.EVT_GRID_LABEL_RIGHT_CLICK:当用户在行或列的标签区域敲击鼠标右键时触发该事件。

wx.grid.EVT_GRID_LABEL_RIGHT_DCLICK:当用户在行或列的标签区域双击鼠标右键时触发该事件。

wx.grid.EVT_GRID_Select_CELL:当用户将焦点移到一个新的单元格,并选择它时触发该事件。

有两个事件类型,它们有一个wx.grid.GridSizeEvent实例。这两个事件类型分别是wx.grid.EVT_GRID_COL_SIZE:当列大小被改变时触发,wx.grid.EVT_GRID_ROW_SIZE:当行的大小被改变时触发。网格的尺寸事件有5个与wx.GridEvent!AltDown(), ControlDown(), GetPosition(), MetaDow(), 和ShiftDown相同的方法。wx.grid.GridSizeEvent的最后的一个方法是GetRowOrCol(),该方法返回发生改变的列或行的索引,当然这依赖于具体的事件类型。

事件类型wx.grid.EVT_GRID_RANGE_Select有一个wx.grid.GridRangeSelectEvent的实例,该事件当用户选择连续矩形范围内的单元格中被触发。该事件的实例拥有的方法是GetBottomRightCoords(),  GetBottomRow(),  GetLeftCol(),  GetRightCol(),  GetTopRightCoords()和GetTopRow(),它们返回被选择区域的整数索引或(row, col)元组。

最后,事件类型EVT_GRID_EDITOR_CreateD有一个wx.grid.GridEditorCreatedEvent实例。这个事件在当通过一个编辑会话创建了一个编辑器时被触发。该事件实例的方法有GetCol(), GetRow(), 和GetControl(),它们分别返回发生事件的列,行的索引和使用的编辑控件。

14.4.2 如何捕获用户的键盘动作?

除了使用鼠标外,用户还可以使用键盘来在网格中移动。你可以通过代码的方法来使用表14.10中的移动方法改变光标。其中的许多方法都要求一个expandSelection参数。每个方法中的expandSelection的作用都相同。如果这个参数为True,那么当前的选项将被扩展以容纳这个新的光标位置。如果这个参数为False,那么当前的选项被新的光标所取代。

表14.10 网格光标移动方法

MoveCursorDown(expandSelection):向下移动光标。如果expandSelection为False,等同于按下"下箭头键",如果为True,则等同于按下"shift-下箭头键"。

MoveCursorDownBlock(expandSelection):向下移动光标。如果expandSelection为False,则等同于"ctrl-下箭头键",如果为True,则等同于"shift-ctrl-下箭头键"。

MoveCursorLeft(expandSelection):向左移动光标。如果expandSelection为False,等同于按下"左箭头键",如果为True,则等同于按下"shift-左箭头键"。

MoveCursorLeftBlock(expandSelection):向左移动光标。如果expandSelection为False,则等同于"ctrl-左箭头键",如果为True,则等同于"shift-ctrl-左箭头键"。

MoveCursorRight(expandSelection):向右移动光标。如果expandSelection为False,等同于按下"右箭头键",如果为True,则等同于按下"shift-右箭头键"。

MoveCursorRightBlock(expandSelection):向右移动光标。如果expandSelection为False,则等同于"ctrl-右箭头键",如果为True,则等同于"shift-ctrl-右箭头键"。

MoveCursorUp(expandSelection):向上移动光标。如果expandSelection为False,等同于按下"上箭头键",如果为True,则等同于按下"shift-上箭头键"。

MoveCursorUpBlock(expandSelection):向上移动光标。如果expandSelection为False,则等同于"ctrl-上箭头键",如果为True,则等同于"shift-ctrl-上箭头键"。

MovePageDown():显示下一页的单元格。

MovePageUp():显示上一页的单元格。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值