【问题标题】:Python - SimpleGui - Listbox - After Search I lose the highlightPython - SimpleGui - Listbox - 搜索后我失去了亮点
【发布时间】:2021-03-20 04:16:54
【问题描述】:

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

我没有在输入中添加任何文本我可以选择员工姓名并带有这样的突出显示:

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

我的代码:

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)

有人经历过吗?我该如何解决?

谢谢!

【问题讨论】:

    标签: python listbox highlight pysimplegui


    【解决方案1】:

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

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

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

    所以代码应该是

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

    在这里,当输入为空时,您不会将列表框恢复为完整列表。所以也许你需要处理另一个案例

        if Event == '-input-' and Values['-input-'] == '':
            # update Listbox with values=employees_list
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-21
      • 2023-02-04
      • 1970-01-01
      • 1970-01-01
      • 2018-04-07
      • 2011-06-30
      • 1970-01-01
      相关资源
      最近更新 更多