PySimpleGUI ListBox元素
PySimpleGUI工具包中的这个GUI元素是一个容器,可以显示一个或多个项目,并从中选择。你可以指定一次可以看到的项目的数量。如果项目的数量或其长度超过了Listbox的尺寸,一个垂直和/或水平的滚动条就会出现在元素的右侧或底部。
列表框类的重要属性如下
序号 | 属性和描述 |
---|---|
1 | Values 要显示的值的列表。可以是任何类型,包括混合类型 |
2 | default_values 最初应该选择哪些值? |
3 | select_mode 选择模式用于确定只能选择1个项目还是多个项目,以及如何选择它们。 |
4 | no_scrollbar 控制是否应该显示滚动条。如果为 “真”,将不显示滚动条。 |
5 | horizontal_scroll 控制是否应该显示水平滚动条。如果为 “真”,除了垂直滚动条外,还会显示水平滚动条。 |
select_mode “属性可以有以下列举的值之一
- LISTBOX_SELECT_MODE_SINGLE (默认)
-
listbox_select_mode_multiple(默认)
-
listbox_select_mode_browse(默认)
-
listbox_select_mode_extended(扩展的)
列表框类从元素类继承了update()方法。当窗口被更新时,它对一些属性的变化产生影响。update()方法的参数是
序号 | 属性和描述 |
---|---|
1 | Values 将显示给用户的新的选择列表 |
2 | **Disabled ** 该元素的禁用或启用状态 |
3 | set_to_index 突出所示的项目。如果 parm 是一个int,一个项目将被设置。如果是一个列表,那么列表中的每个条目都会被加亮。 |
4 | scroll_to_index 滚动列表框,使该索引成为第一个显示的索引。 |
5 | select_mode 改变选择模式 |
6 | Visible 控制元素的可见性 |
在下面的程序中,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()
运行上述代码,在输入框中输入一些文本,然后按添加按钮。该文本将被添加到它下面的列表框中。
列表框类的get()方法返回所选项目的列表。默认情况下,只有一个项目可以选择。删除按钮获得所选项目的值并将其从集合中删除。