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
我有一个非常简单的界面,其中有一个包含员工姓名的列表框和一个输入文本,我可以在其中输入姓名以便更快地进行搜索。
我没有在输入中输入任何文字我可以 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