黑马程序员技术交流社区

标题: Python实例讲解 -- wxpython 基本的控件 (按钮)续4 [打印本页]

作者: 易大帅    时间: 2017-3-22 07:36
标题: Python实例讲解 -- wxpython 基本的控件 (按钮)续4
表7.11 wx.RadioBox 的方法
EnableItem(n , flag) :flag 参数是一个布尔值,它用于使索引为n的按钮有效或无效。要使整个框立即有效,使用Enable() 。
FindString(string) :根据给定的标签返回相关按钮的整数索引值,如果标签没有发现则返回-1。
GetCount() :返回框中按钮的数量。
GetItemLabel(n) SetItemLabel(n , string) :返回或设置索引为n的按钮的字符串标签。
GetSelection() GetStringSelection() SetSelection(n) SetStringSelection( string) :GetSelection() 和SetSelection() 方法处理当前所选择的单选按钮的整数索引。GetStringSelection() 返回当前所选择的按钮的字符串标签,SetStringSelection() 改变所选择的按钮的字符串标签为给定值。没有set *()产生EVT_RADIOBOX 事件。
ShowItem(item , show) :show 参数是一个布尔值,用于显示或隐藏索引为item 的按钮。

单选按钮不是给用户一系列选择的唯一方法。列表框和组合框占用的空间也少,也可以被配置来让用户从同一组中作多个选择。

如何创建一个列表框?
列 表框是提供给用户选择的另一机制。选项被放置在一个矩形的窗口中,用户可以选择一个或多个。列表框比单选按钮占据较少的空间,当选项的数目相对少的时候, 列表框是一个好的选择。然而,如果用户必须将滚动条拉很远才能看到所有的选项的话,那么它的效用就有所下降了。图7.13显示了一个wxPython 列表框。


在wxPython 中,列表框是类wx.ListBox 的元素。该类的方法使你能够处理列表中的选择。

如何创建一个列表框

例7.13显示了产生图7.13的代码

例7.13 使用wx.ListBox

Python代码  


wx.ListBox 的构造函数类似于单选框的,如下所示:

Python代码  



单选框和列表框的主要区别是wx.ListBox 没有label 属性。显示在列表中的元素放置在参数choices 中,它是一个字符串的序列。列表框有三种互斥的样式,它决定用户如何从列表框中选择元素,说明在表7.12中。

用户通常对于多选有一些问题,因为它们一般希望见到的是单选列表,对于多选来说可能是有挑战性的(就像单选题和多选题一样),尤其是对于那些易受困扰的用户。如果你使用了一个多选的列表,我们建议你清楚地标明该列表。

表7.12 列表框的选择类型样式

wx.LB_EXTENDED :用户可以通过使用shift 并敲击鼠标来选择一定范围内的连续的选项,或使用等同功能的按键。
wx.LB_MULTIPLE :用户可以一次选择多个选项(选项可以是不连续的)。实际上,在这种情况下,列表框的行为就像是一组复选框。

wx.LB_SINGLE :用户一次只能选一个选项。实际上,在这种情况下,列表框的行为就像是一组单选按钮。

有三种控制wx.ListBox 中滚动条的显示的样式,如表7.13所示。

表7.13 列表框的滚动条类型样式
wx.LB_ALWAYS_SB :列表框将始终显示一个垂直的滚动条,不管有没有必要。
wx.LB_HSCROLL :如果本地控支持,那么列表框在选择项太多时,将创建一个水平滚动条。
wx.LB_HSCROLL :列表框只在需要的时候显示一个垂直的滚动条。这是默认样式。

还有一个样式wx.LB_SORT ,它使得列表中的元素按字母顺序排序。

有两个专用于wx.ListBox 的命令事件。EVT_LISTBOX 事件在当列表中的一个元素被选择时触发(即使它是当前所选择的元素)。如果列表被双击,EVT_LISTBOX_DCLICK 事件发生。

有一些专用于列表框的方法,你可以用来处理框中的项目。表7.14对许多的方法作了说明。列表框中的项目索引从0开始。
一旦你有了一个列表框,自然就想把它与其它的窗口部件结合起来使用,如下拉菜单,或复选框。在下一节,我们对此作讨论。

表7.14 列表框的方法
Append(item) :把字符串项目添加到列表框的尾部。
Clear() :清空列表框。
Delete(n) :删除列表框中索引为n的项目。
Deselect(n) :在多重选择列表框中,导致位于位置n的选项取消选中。在其它样式中不起作用。
FindString(string) :返回给定字符串的整数位置,如果没有发现则返回-1。
GetCount() :返回列表中字符串的数量。
GetSelection() SetSelection(n , select) GetStringSelection() SetStringSelection(string , select)GetSelections() :GetSelection() 得到当前选择项的整数索引(仅对于单选列表)。对于多选列表,使用GetSelections() 来返回包含所选项目的整数位置的元组。对于单选列表,GetStringSelection() 返回当前选择的字符串。相应的set 方法使用布尔值参数select 设置指定字符串或索引选项的状态。使用这种方法改变选择不触发EVT_LISTBOX 事件。
GetString(n) SetString(n , string) :得到或设置位置n处的字符串。
InsertItems(items , pos) :插入参数items 中的字符串列表到该列表框中pos 参数所指定的位置前。位置0表示把项目放在列表的开头。
Selected(n) :返回对应于索引为n的项目的选择状态的布尔值。
Set(choices) :重新使用 choices 的内容设置列表框。

如何合并复选框和列表框?
你可以使用类wx.CheckListBox 来将复选框与列表框合并。图7.14显示了列表框和复选框在合并在一起的例子。

图7.14

wx.CheckListBox 的构造函数和大多数方法与wx.ListBox 的相同。它有一个新的事件:wx.EVT_CHECKLISTBOX ,它在当列表中的一个复选框被敲击时触发。它有两个管理复选框的新的方法:Check(n , check) 设置索引为n的项目的选择状态,IsChecked(item) 在给定的索引的项目是选中状态时返回True 。

如果我想要下拉形式的选择该怎么做?
下拉式选择是一种仅当下拉箭头被敲击时才显示选项的选择机制。它是显示所选元素的最简洁的方法,当屏幕空间很有限的时候,它是最有用的。图7.15显示了一个关闭的下拉式选择。图7.16显示了一个打开的下拉式选择。

图7.15
图7.16


下拉式选择的使用与标准的列表框是很相似的。例7.14显示了如何创建一个下拉式选择。

例7.14

Python代码  


wx.Choice 的构造函数与列表框的基本相同:

Python代码  



wx.Choice 没有专门的样式,但是它有独特的命令事件:EVT_CHOICE 。几乎表7.14中所有适用于单选列表框的方法都适用于wx.Choice 对象。

我能够将文本域与列表合并在一起吗?
将文本域与列表合并在一起的窗口部件称为组合框,其本质上是一个下拉选择和文本框的组合。图7.17显示了一个组合框。

图7.17 左边是wx.CB_DropDOWN 样式,右边是wx.CB_SIMPLE 样式


在Windows 上,你可以使用右边的样式,它是一个列表框和文本框的组合。
创建组合框的代码与我们已经见过的选择是类似的。该类是wx.ComboBox ,它是wx.Choice 的一个子类。例7.15显示了图7.17的代码:


对于wx.ComboBox 来说有4种样式。其中的两种决定了如何绘制组合框:wx.CB_DropDOWN 创建一个带有下拉列表的组合框,wx.CB_SIMPLE 创建一个带有列表框的组合框。在Windows 上你可以只使用wx.CB_SIMPLE 样式。任何组合框都可以被指定为wx.CB_READONLY 样式,它防止用户在文本域中键入。当组合框被指定为只读时,所做的选择必须来自于选择列表的元素之一,即使你用程序来设置它也不行。最后wx.CB_SORT 样式导致选择列表中的元素按字母顺序显示。

由于wx.ComboBox 是wx.Choice 的子类,所有的wx.Choice 的方法都能被组合框调用,如表7.14所示。另外,还有许多方法被定义来处理文本组件,它们的行为同wx.TextCtrl (参见表7.4),所定义的方法有Copy() , Cut() ,GetInsertionPoint() , GetValue() , Paste() , Replace(from ,to , text) , Remove(from , to) ,SetInsertionPoint(pos) , SetInsertionPointEnd() ,和 SetValue() 。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2