Logo

郎哥编程

组合框控件

2019-07-13 607

组合框控件是静态文本控件和列表框控件的组合体,在静态文本控件的右侧有一个带着向下箭头图片的按钮,当用户按下按钮时,列表框控件就会显示,用户从列表框控件中选择一个文本数据项,选中的文本数据项会显示在静态文本控件里。

image.png                                             

与组合框控件相关的类是wx. ComboBox,wx. ComboBox的构造函数为:

ComboBox(parent, id=ID_ANY, value="", pos=DefaultPosition,
         size=DefaultSize, choices=[], style=0, validator=DefaultValidator,
         name=ComboBoxNameStr)

其构造函数的参数说明如下:

parent:该控件的父窗口,可以是窗体对象,也可以是面板对象,类型是wx.Window。

id:控件标识符。使用-1可以自动创建一个唯一的标识,类型是wx.WindowID。

value:默认选中的文本项。

pos: 控件在父窗口的起始位置,类型是wx.Point。

size: 控件的宽度和高度,类型是wx.Size。

choices:字符串列表,用于显示的文本数据项。类型是列表。

style:控件样式。

validator:窗口验证器。

name:控件的名称。

参数style设定了wx. ComboBox的输出样式,主要样式如下:

wx.CB_SIMPLE: 设置该样式后,会创建一个一直显示列表框的组合框。

wx.CB_DROPDOWN: 设置该样式后,会创建一个带有下拉列表框的组合框。

wx.CB_READONLY: 具有此样式的组合框允许用户从选项列表中进行选择,但不允许输入列表中不存在的值。

wx.CB_SORT: 设置该样式后,控件内的文本数据项将按照字母顺序进行排序。

wx.TE_PROCESS_ENTER: 设置该样式后,控件将发送事件EVT_TEXT_ENTER。

关于 wx.ComboBox的方法

wx.ComboBox类提供了一些方法用来操作组合框控件,下面列出了wx.ComboBox类提供的一些常用方法,更多方法请参见官方API文档。

https://docs.wxpython.org

Append(item):把字符串项目添加到组合框的尾部。

GetCount(self):返回组合框中的项数,返回值为int。

GetString(self, n):返回指定索引的项的文本串,返回值为字符串。

GetSelection(self):返回所选项的索引(int类型),如果未选择任何项,则返回NOT_FOUND。

SetSelection (self, n):将所选内容设置为给定的项n。

GetCurrentSelection(self):返回当前选址的项,返回值为int。

关于wx.ComboBox的事件

wx. ComboBox可以发送以下类型的事件:

EVT_COMBOBOX: 用户选择列表项目时,发送该事件。

EVT_TEXT: 当组合框的文本发生改变时,发送该事件。

EVT_TEXT_ENTER: 当在组合框中按回车键时发送该事件(请注意,必须使用 wx.TE_PROCESS_ENTER style创建组合框才能发送此事件)。

EVT_COMBOBOX_DROPDOWN: 控件显示组合框列表框部分时发送该事件。

EVT_COMBOBOX_CLOSEUP: 当组合框的列表框消失(关闭)时发送该事件。

案例代码:

import wx
   
class ComBoxFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, 'ComBox',size=(400, 400))
        panel = wx.Panel(self, -1)
        sampleList = ['Java编程基础', 'Python编程基基础', '数据库技术', '数据结构与算法', 'HTML技术', 'CSS技术']
        comBox = wx.ComboBox(panel, -1,'Python编程基基础', (100, 50), (200, 120), sampleList,wx.CB_DROPDOWN)
        comBox.SetSelection(1)
 
        # 绑定EVT_COMBOBOX事件
        self.Bind(wx.EVT_COMBOBOX, self.OnSelectChange,comBox)
 
        # 绑定EVT_COMBOBOX_DROPDOWN事件
        self.Bind(wx.EVT_COMBOBOX_DROPDOWN, self.OnShowListBoxClick,comBox)
 
    #ComBox选择事件处理方法 
    def OnSelectChange(self,event):
          wx.MessageBox("您改变了选项")
 
    #ComBox显示下拉框事件
    def OnShowListBoxClick(self,event):
          wx.MessageBox("您显示了下拉框")
                  
if __name__ == '__main__':
    app = wx.App()
    ComBoxFrame().Show()
    app.MainLoop()

案例代码执行效果图:

image.png

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论