wxPython ComboBox & Choice 类

wxPython ComboBox & Choice 类

一个 wx.ComboBox 对象提供了一个可以选择的项目列表。它可以配置为下拉列表或永久显示。

列表中选择的项目会显示在一个文本字段中,默认情况下可编辑,但可以通过设置 wx.CB_READONLY 样式参数为只读。

wxPython API 还包含了一个 wx.Choice 类 ,其对象也是一个下拉列表,但永久为只读。

wx.ComboBox 类构造函数使用的参数有:

Wx.ComboBox(parent, id, value, pos, size, choices[], style)

value参数是要在组合框的文本框中显示的文本。它从choices[]集合中的项目填充。

以下样式参数适用于wx.ComboBox:

序号 参数和描述
1 wx.CB_SIMPLE 永久显示列表的下拉框
2 wx.CB_DROPDOWN 带有下拉列表的下拉框
3 wx.CB_READONLY 选中的项目不可编辑
4 wx.CB_SORT 列表以字母顺序显示

下表显示了wx.ComboBox类常用的方法- 给出下面是wx.ComboBox最常用的方法

序号 方法和描述
1 GetCurrentSelection () 返回所选的项目
2 SetSelection() 将给定索引处的项目设置为选定
3 GetString() 返回与给定索引处的项目关联的字符串
4 SetString() 更改给定索引处项目的文本
5 SetValue() 将字符串设置为组合框的编辑字段中显示的文本
6 GetValue() 返回组合框文本字段的内容
7 FindString() 在列表中搜索给定的字符串
8 GetStringSelection() 获取当前选定项目的文本

生成的事件绑定者如下-

序号 事件与描述
1 wx. COMBOBOX 当列表中的项目被选中时
2 wx. EVT_TEXT 当组合框文本发生改变时
3 wx. EVT_COMBOBOX_DROPDOWN 当下拉列表展开时
4 wx. EVT_COMBOBOX_CLOSEUP 当下拉列表收起时

wx.Choice 类的构造函数原型如下 −

wx.Choice(parent, id, pos, size, n, choices[], style)

参数’n’代表初始化选择列表的字符串数量。与comboBox类似,该列表使用choices[]集合中的项目进行填充。

对于Choice类,只定义了一个样式参数,即wx.CB_SORT。只有一个事件绑定器处理该类发出的事件,即wx.EVT_CHOICE。

示例

此示例展示了wx.ComboBox和wx.Choice的功能。两个对象都放置在一个垂直的盒子sizer中。列表使用languages[] List对象中的项目进行填充。

languages = ['C', 'C++', 'Python', 'Java', 'Perl'] 
self.combo = wx.ComboBox(panel,choices = languages) 
self.choice = wx.Choice(panel,choices = languages)

事件绑定器 EVT_COMBOBOX 和 EVT_CHOICE 处理它们上面的相应事件。

self.combo.Bind(wx.EVT_COMBOBOX, self.OnCombo) 
self.choice.Bind(wx.EVT_CHOICE, self.OnChoice)

下面的处理函数将所选的项目从列表中显示在标签上。

def OnCombo(self, event): 
   self.label.SetLabel("selected "+ self.combo.GetValue() +" from Combobox") 

def OnChoice(self,event): 
   self.label.SetLabel("selected "+ self.choice.
      GetString( self.choice.GetSelection() ) +" from Choice")

完整的代码清单如下:

import wx  
class Mywin(wx.Frame): 
   def __init__(self, parent, title): 
      super(Mywin, self).__init__(parent, title = title,size = (300,200)) 

      panel = wx.Panel(self) 
      box = wx.BoxSizer(wx.VERTICAL) 
      self.label = wx.StaticText(panel,label = "Your choice:" ,style = wx.ALIGN_CENTRE) 
      box.Add(self.label, 0 , wx.EXPAND |wx.ALIGN_CENTER_HORIZONTAL |wx.ALL, 20) 
      cblbl = wx.StaticText(panel,label = "Combo box",style = wx.ALIGN_CENTRE) 

      box.Add(cblbl,0,wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ALL,5) 
      languages = ['C', 'C++', 'Python', 'Java', 'Perl'] 
      self.combo = wx.ComboBox(panel,choices = languages) 

      box.Add(self.combo,1,wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ALL,5) 
      chlbl = wx.StaticText(panel,label = "Choice control",style = wx.ALIGN_CENTRE) 

      box.Add(chlbl,0,wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ALL,5) 
      self.choice = wx.Choice(panel,choices = languages) 
      box.Add(self.choice,1,wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ALL,5) 

      box.AddStretchSpacer() 
      self.combo.Bind(wx.EVT_COMBOBOX, self.OnCombo) 
      self.choice.Bind(wx.EVT_CHOICE, self.OnChoice)

      panel.SetSizer(box) 
      self.Centre() 
      self.Show() 

   def OnCombo(self, event): 
      self.label.SetLabel("You selected"+self.combo.GetValue()+" from Combobox") 

   def OnChoice(self,event): 
      self.label.SetLabel("You selected "+ self.choice.GetString
         (self.choice.GetSelection())+" from Choice") 

app = wx.App() 
Mywin(None,  'ComboBox and Choice demo') 
app.MainLoop()

上述代码会产生以下输出:

wxPython ComboBox & Choice 类

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程