Autocompletar ComboBox en Python-Tkinter

Requisitos previos: interfaz gráfica de usuario de Python – tkinter

El widget Listbox se utiliza para mostrar una lista de elementos de los que un usuario puede seleccionar una serie de elementos. Pero, ¿alguna vez te has preguntado cómo devolver la lista de posibles resultados cuando se presiona una tecla? Veamos el siguiente enfoque hacia el mismo.

Trabajo del programa

  • Se inicializa la lista que consta de palabras.
  • Se crean el cuadro de entrada y el cuadro de lista y se agregan a la ventana raíz.
  • La función de enlace se utiliza para el manejo de eventos. El evento de liberación de clave se maneja para un campo de entrada.
  • Cuando se presiona cualquier tecla en la entrada, checkkey()se llama a la función.
  • checkkey()Luego, la función compara la string ingresada con las palabras clave de la lista existente y completa el cuadro de lista con las palabras clave coincidentes.
  • Luego, estos datos se envían a la función de actualización que luego actualiza el cuadro de lista.

A continuación se muestra el enfoque.

from tkinter import *
   
      
# Function for checking the
# key pressed and updating
# the listbox
def checkkey(event):
       
    value = event.widget.get()
    print(value)
      
    # get data from l
    if value == '':
        data = l
    else:
        data = []
        for item in l:
            if value.lower() in item.lower():
                data.append(item)                
   
    # update data in listbox
    update(data)
   
   
def update(data):
      
    # clear previous data
    lb.delete(0, 'end')
   
    # put new data
    for item in data:
        lb.insert('end', item)
  
  
# Driver code
l = ('C','C++','Java',
     'Python','Perl',
     'PHP','ASP','JS' )
  
root = Tk()
  
#creating text box 
e = Entry(root)
e.pack()
e.bind('<KeyRelease>', checkkey)
  
#creating list box
lb = Listbox(root)
lb.pack()
update(l)
   
root.mainloop()

Producción:

python-listbox

Publicación traducida automáticamente

Artículo escrito por rupanisweety y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *