wx.ComboBox
控件是由一个编辑框和列表组合而成的下拉列表。它可以显示为静态列表带有可编辑或只读文本框,也可以显示为带下拉列表的文本区域,或者是不带文本框的下拉列表。wx.ComboBox
只允许单选。
下面是wx.ComboBox
控件的常用参数和方法及用法举例:
常用参数
parent
: 父窗口对象。id
: 控件ID。value
: 控件初始值。pos
: 控件在父窗口中的位置。size
: 控件的大小。style
: 控件样式,可以使用wx.CB_READONLY来隐藏原生的下拉列表。validator
: 控件数据验证器。
常用方法
SetValue
: 设置当前选择项的值。GetValue
: 获取当前选择项的值。GetStringSelection
: 获取当前选择项的字符串形式。GetString
: 获取列表中的字符串。Append
: 添加一项到列表末尾。Clear
: 清空所有选项。Delete
: 删除指定项。FindString
: 查找并返回与给定的字符串匹配的项目的索引。Popup
: 手动弹出下拉列表。Bind(event, handler)
: 绑定事件处理函数,常见的事件包括EVT_COMBOBOX、EVT_TEXT等。
用法举例
import wx
class ComboBoxFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'wx.ComboBox示例')
panel = wx.Panel(self, -1)
sizer = wx.BoxSizer(wx.VERTICAL)
label = wx.StaticText(panel, -1, "请选择一项:")
sizer.Add(label, 0, wx.ALL, 5)
# 创建ComboBox控件
combo = wx.ComboBox(panel, -1, style=wx.CB_READONLY,
choices=["选项1", "选项2", "选项3"])
# 增加一项
combo.Append("选项4")
# 删除一项
combo.Delete(3)
# 选中第一项
combo.SetSelection(0)
# 获取选中的项的索引和字符串形式
index = combo.GetSelection()
selection = combo.GetStringSelection()
# 添加事件处理函数
combo.Bind(wx.EVT_COMBOBOX, self.OnSelect)
# 将ComboBox控件加入Sizer中
sizer.Add(combo, 0, wx.ALL, 5)
panel.SetSizer(sizer)
def OnSelect(self, event):
# 获取当前选中的项的索引和字符串形式
index = event.GetSelection()
selection = event.GetString()
print(f"选中的项是{selection},索引是{index}")
if __name__ == '__main__':
app = wx.App()
frame = ComboBoxFrame()
frame.Show()
app.MainLoop()
以上代码创建了一个下拉列表控件,并演示了添加、删除、选中某一项以及获取选中项的索引和字符串形式等操作。同时,绑定了EVT_COMBOBOX
事件,输出了当前选中项的信息。