- PySimpleGUI 教程
- PySimpleGUI - 首页
- PySimpleGUI - 简介
- PySimpleGUI - 环境设置
- PySimpleGUI - Hello World
- PySimpleGUI - 弹出窗口
- PySimpleGUI - 窗口类
- PySimpleGUI - 元素类
- PySimpleGUI - 事件
- PySimpleGUI - 菜单栏
- PySimpleGUI - Matplotlib 集成
- PySimpleGUI - 使用 PIL
- PySimpleGUI - 调试器
- PySimpleGUI - 设置
- PySimpleGUI 有用资源
- PySimpleGUI - 快速指南
- PySimpleGUI - 有用资源
- PySimpleGUI - 讨论
PySimpleGUI - 列表框元素
在 PySimpleGUI 工具包中,此 GUI 元素是一个容器,可以显示一个或多个项目,并从中进行选择。您可以指定一次可见的项目数量。如果项目数量或长度超过列表框的尺寸,则在元素的右侧或底部会出现垂直和/或水平滚动条。
ListBox 类的重要属性如下:
| 序号 | 属性及描述 |
|---|---|
| 1 | 值 要显示的值列表。可以是任何类型,包括混合类型 |
| 2 | default_values 最初应选择哪些值 |
| 3 | select_mode 选择模式用于确定是否只能选择 1 个项目或多个项目,以及如何选择它们。 |
| 4 | no_scrollbar 控制是否应显示滚动条。如果为 True,则不显示滚动条 |
| 5 | horizontal_scroll 控制是否应显示水平滚动条。如果为 True,则除了垂直滚动条外,还会显示水平滚动条 |
“select_mode”属性可以具有以下枚举值之一:
LISTBOX_SELECT_MODE_SINGLE(默认)
LISTBOX_SELECT_MODE_MULTIPLE
LISTBOX_SELECT_MODE_BROWSE
LISTBOX_SELECT_MODE_EXTENDED
ListBox 类继承了 Element 类的 update() 方法。当窗口更新时,它会影响某些属性的变化。update() 方法的参数为:
| 序号 | 属性及描述 |
|---|---|
| 1 | 值 要显示给用户的新选项列表 |
| 2 | 禁用 元素的禁用或启用状态 |
| 3 | set_to_index 突出显示指示的项目(或项目)。如果parm是整数,则将设置一个条目。如果是列表,则突出显示列表中的每个条目 |
| 4 | scroll_to_index 滚动列表框,使该索引成为第一个显示的索引 |
| 5 | select_mode 更改选择模式 |
| 6 | 可见 控制元素的可见性 |
ListBox 元素在以下程序中处于活动状态。PySimpleGUI 窗口显示一个输入元素、一个列表框和带有“添加”、“删除”和“退出”标题的按钮。
import PySimpleGUI as psg
names = []
lst = psg.Listbox(names, size=(20, 4), font=('Arial Bold', 14), expand_y=True, enable_events=True, key='-LIST-')
layout = [[psg.Input(size=(20, 1), font=('Arial Bold', 14), expand_x=True, key='-INPUT-'),
psg.Button('Add'),
psg.Button('Remove'),
psg.Button('Exit')],
[lst],
[psg.Text("", key='-MSG-', font=('Arial Bold', 14), justification='center')]
]
window = psg.Window('Listbox Example', layout, size=(600, 200))
while True:
event, values = window.read()
print(event, values)
if event in (psg.WIN_CLOSED, 'Exit'):
break
if event == 'Add':
names.append(values['-INPUT-'])
window['-LIST-'].update(names)
msg = "A new item added : {}".format(values['-INPUT-'])
window['-MSG-'].update(msg)
if event == 'Remove':
val = lst.get()[0]
names.remove(val)
window['-LIST-'].update(names)
msg = "A new item removed : {}".format(val)
window['-MSG-'].update(msg)
window.close()
运行上述代码,在输入框中输入一些文本,然后按“添加”按钮。文本将添加到其下方的列表框中。
ListBox 类的 get() 方法返回所选项目的列表。默认情况下,只能选择一个项目。“删除”按钮获取所选项目的值并将其从集合中删除。