wxpython下拉选择框_wxPython ComboBox & Choice类

本文介绍了如何在wxPython中使用ComboBox和Choice类创建下拉选择框。ComboBox允许用户编辑选择,而Choice则是只读的。文章详细讲解了构造函数参数、样式设置、常用方法、事件绑定及其处理函数,通过示例展示了如何填充选项并响应用户选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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

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

S.N.

参数和说明

1

wx.CB_SIMPLE

组合框与永久显示的列表

2

wx.CB_DROPDOWN

组合框与下拉列表

3

wx.CB_READONLY

选择的项目是不可编辑

4

wx.CB_SORT

列表显示按字母顺序

下表显示了常用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”代表字符串的数目使于选择列表的初始化。像组合框,项目被填充到 choices[]集合列表。

对于选择类,wx.CB_SORT为只有一个类型的参数定义。wx.EVT_CHOICE为只有一个事件绑定处理由该类发出的事件。

实例

下面的示例显示 wx.ComboBox 和 wx.Choice 的特点。这两个对象被放在一个垂直的盒子大小测定器(sizer)。这些项目用于填充languages[]列表的对象。

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 & Choice Demo - www.yiibai.com')

app.MainLoop()

上面的代码产生下面的输出 -

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值