Python - SimpleGui - 列表框 - 搜索后我失去了突出显示

Python - SimpleGui - Listbox - After Search I lose the highlight

我有一个非常简单的界面,其中有一个包含员工姓名的列表框和一个输入文本,我可以在其中输入姓名以便更快地进行搜索。

我没有在输入中输入任何文字我可以 select 员工姓名,像这样突出显示:

但是,如果我搜索名称(然后我将仅使用包含我编写的文本的名称来更新新列表的此元素),我将无法获得突出显示,如您所见:

我的代码:

import PySimpleGUI as sg

employees_list = ['John','Pete','Anne','Jack','Golsing']
layout = [[sg.Input(visible=True,size=(15, 1), enable_events=True,key='-input-')]
        ,[sg.Listbox(values=employees_list,size=(15, 3),enable_events=True, select_mode=sg.LISTBOX_SELECT_MODE_MULTIPLE, key='-employee-')]]

Window = sg.Window('DEV', layout)

while True:
    Event, Values = Window.read()

    if Event == sg.WIN_CLOSED:
        break

    if Values['-input-'] != '':
        search = Values['-input-'].upper()
        new_employees = [x.upper() for x in employees_list if search in x]
        Window.Element('-employee-').Update(values=new_employees, select_mode=sg.LISTBOX_SELECT_MODE_MULTIPLE)

有没有人经历过这个?我该如何解决?

谢谢!

你应该在这里处理不同的事件,

    if Values['-input-'] != '':

此处,如果有任何事件发生,您将执行此操作,因此 Listbox 将在您单击 Listbox 时更新,因此选择将设置为 none,这就是为什么没有项目选中或突出显示。

所以代码应该是

    if Event == '-input-' and Values['-input-'] != '':

并且这里您不会在输入为空时将列表框恢复为完整列表。所以也许你需要为

处理另一个案例
    if Event == '-input-' and Values['-input-'] == '':
        # update Listbox with values=employees_list