PySimpleGUI - Combo 组合元素

Combo 组合元素是一个下拉列表。 它最初显示一个 Input 元素,其右侧有一个箭头。 单击箭头时,列表框会向下拉。 因此,您可以在输入文本框中输入文本,或从下拉列表中选择一个项目,以便所选项目显示在输入框中。

Combo 组合元素的功能或多或少与 Listbox 相似。 它由列表中的字符串项集合填充。 您还可以指定要显示在顶部的默认值。

以下是Combo类的重要属性 −

序号 属性 & 描述
1 values

要显示和选择的值列表。

2 default_value

要显示为初始值的选择。

3 size

宽度,高度。 宽度 = 字符宽度,高度 = 要在列表中显示的条目数。

get() 方法返回组合的当前(当前)值。 update() 方法修改 Combo 对象的以下属性 −

序号 属性 & 描述
1 value

根据先前选择列表的新列表更改当前选择的值

2 values

改变选择列表

3 set_to_index

将选择更改为从索引 index = 0 开始的特定选项

4 readonly

如果为 True,则使元素只读(用户不能更改任何选择)。

在下面的示例中,我们使用 Combo 元素的选择更改事件。 如果用户通过在弹出对话框中按"Yes"进行响应,则删除下拉列表中的选定元素。

import PySimpleGUI as psg
names = []
lst = psg.Combo(names, font=('Arial Bold', 14),  expand_x=True, enable_events=True,  readonly=False, key='-COMBO-')
layout = [[lst,
   psg.Button('Add', ),
   psg.Button('Remove'),
   psg.Button('Exit')],
   [psg.Text("", key='-MSG-',
      font=('Arial Bold', 14),
      justification='center')]
   ]
window = psg.Window('Combobox Example', layout, size=(715, 200))
while True:
   event, values = window.read()
   print(event, values)
   if event in (psg.WIN_CLOSED, 'Exit'):
      break
   if event == 'Add':
      names.append(values['-COMBO-'])
      print(names)
      window['-COMBO-'].update(values=names, value=values['-COMBO-'])
      msg = "A new item added : {}".format(values['-COMBO-'])
      window['-MSG-'].update(msg)
   if event == '-COMBO-':
      ch = psg.popup_yes_no("Do you want to Continue?", title="YesNo")
   if ch == 'Yes':
      val = values['-COMBO-']
      names.remove(val)
   window['-COMBO-'].update(values=names, value=' ')
   msg = "A new item removed : {}".format(val)
   window['-MSG-'].update(msg)
window.close()

当 Combo 对象发出事件(由其键"-COMBO-"标识)作为下拉列表中的项目被单击时。 将显示一个 Yes-No 弹出窗口,要求确认。 如果单击"Yes"按钮,则会从列表中删除与 Combo 元素的文本框相对应的项目,并用其余项目重新填充该元素。

窗口截图如下所示 −

Combo 组合元素

❮ PySimpleGUI 元素类