Logo

郎哥编程

列表框控件

2019-07-11 484

列表框控件在一个矩形区域内,可以显示多条文本数据项,当文本数据项的条目超过矩形区域的宽度或高度后,列表框控件会自动添加滚动条,用户可以通过滚动条浏览更多的文本数据项。

列表框控件的主要作用是为用户提供多个数据项,用户可以在提供的多个数据项中选择一个或多个数据项。

与列表框控件相关的类是wx. ListBox,wx. ListBox的构造函数为:

ListBox(parent, id=ID_ANY, pos=DefaultPosition, size=DefaultSize,
        choices=[],style=0,validator=DefaultValidator, name=ListBoxNameStr)

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

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

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

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

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

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

style:控件样式。

validator:窗口验证器。

name:控件的名称。

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

wx.LB_SINGLE: 设置该样式后,用户只能选择一个文本数据项。

wx.LB_MULTIPLE: 设置该样式后,用户可以选择多个文本数据项。

wx.LB_EXTENDED: 设置该样式后,用户可以通过使用shift和鼠标键来选择一定范围内的连续的文本数据项。

wx.LB_HSCROLL: 设置该样式后,当文本数据项的内容超过控件的宽度后,控件会自动创建一个水平滚动条。

wx.LB_ALWAYS_SB: 设置该样式后,列表框将始终显示一个垂直的滚动条。

wx.LB_NEEDED_SB: 设置该样式后,只有在需要的情况下,控件才会创建一个垂直的滚动条。

wx.LB_NO_SB: 设置该样式后,控件永远不会创建一个垂直的滚动条。

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

样式可以使用“|”符号来组合使用。

关于wx. ListBox的方法

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

https://docs.wxpython.org

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

Clear():清空列表框。

Delete(n):删除列表框中索引为n的项目。

FindString(string):返回给定字符串的整数位置,如果没有发现则返回-1。

GetCount():返回列表中字符串的数量。

InsertItems(items, pos):插入参数items中的字符串列表到该列表框中pos参数所指定的位置前。位置0表示把项目放在列表的开头。

关于wx. ListBox的事件

wx.ListBox可以发送以下两种类型的事件。

EVT_LISTBOX: 当选择列表中的项目或选择更改时,发送该事件。

EVT_LISTBOX_DCLICK: 当用户双击列表框时,发送该事件。

案例代码:

import wx
   
class ListBoxFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, 'ListBox',size=(400, 400))
        panel = wx.Panel(self, -1)
        sampleList = ['Java编程基础', 'Python编程基基础', '数据库技术', '数据结构与算法', 'HTML技术', 'CSS技术']
        listBox = wx.ListBox(panel, -1, (100, 50), (200, 120), sampleList,
                   wx.LB_SINGLE)
        listBox.SetSelection(1)
 
        # 绑定EVT_LISTBOX事件
        self.Bind(wx.EVT_LISTBOX, self.OnSelectChange,listBox)
 
        # 绑定EVT_LISTBOX_DCLICK事件
        self.Bind(wx.EVT_LISTBOX_DCLICK, self.OnDoubleClick,listBox)
 
    #listBox选择事件处理方法 
    def OnSelectChange(self,event):
          wx.MessageBox("您改变了选项")
 
    #listBox双击事件处理方法
    def OnDoubleClick(self,event):
          wx.MessageBox("您双击了列表框")
                  
if __name__ == '__main__':
    app = wx.PySimpleApp()
    ListBoxFrame().Show()
    app.MainLoop()

 


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

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

评论区

登录 后发表评论
暂无评论