wxPython – ComboBox和选择类

wxPython – ComboBox和选择类

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

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

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

wx.ComboBox类构造函数使用的参数是—

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

值参数是要在组合框的文本框中显示的文本。它是由options[]集合中的项目填充的。

以下是为wx.ComboBox定义的样式参数-

S.N. 参数和描述
1 wx.CB_SIMPLE 组合框具有永久显示的列表。
2 wx.CB_DROPDOWN 带下拉列表的组合框
3 wx.CB_READONLY 所选项目不可编辑
4 wx.CB_SORT 列表按字母顺序显示

下表显示了wx.ComboBox类的常用方法。

下面给出的是wx.ComboBox最常用的方法 S.N. 方法和描述
1 GetCurrentSelection () 返回正在选择的项目
2 SetSelection() 将给定索引处的项目设置为选中的项目。
3 GetString() 返回与给定索引处的项目相关的字符串。
4 SetString() 改变给定索引处的项目的文本。
5 SetValue() 设置一个字符串作为组合框编辑栏中显示的文本。
6 GetValue() 返回组合框中文本字段的内容
7 FindString() 在列表中搜索给定的字符串
8 GetStringSelection() 获取当前所选项目的文本

由该类产生的事件的事件夹是这样的 −

S.N. 事件与描述
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一样,该列表是由options[]集合中的项目填充的。

对于选择类,只有一个样式参数被定义。它是wx.CB_SORT。只有一个事件绑定器处理这个类所发出的事件。它是wx.EVT_CHOICE。

例子

这个例子显示了wx.ComboBox和wx.Choice的特性。这两个对象都被放在一个垂直的框选器中。列表是由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和选择类

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程