Creando una selección múltiple usando Tkinter

Requisitos previos: Python Tkinter – ListBox Widget , ListBox desplazable en Python-tkinter

Tkinter es una biblioteca GUI en Python que es fácil de leer y comprender. En Tkinter, se pueden hacer selecciones múltiples usando el widget de cuadro de lista. Generalmente, un cuadro de lista muestra diferentes elementos en forma de lista. Un widget de cuadro de lista proporciona una o más selecciones de elementos de una lista. Hay muchas opciones disponibles en un widget de cuadro de lista que hace que el usuario seleccione varias opciones. Al asignar la opción de modo de selección como múltiple, el usuario puede seleccionar múltiples opciones. Si la opción de modo de selección es única, el usuario solo puede seleccionar una opción.
La opción de modo de selección de un widget de cuadro de lista puede ser única, de exploración, múltiple o extendida.

  • simple : selecciona una línea de texto.
  • navegar : es una opción predeterminada en la que el usuario puede seleccionar una línea de texto.
  • múltiple : selecciona varias líneas de texto sin arrastrar desde la primera línea de la opción hasta la última línea.
  • extendido : el usuario puede seleccionar y arrastrar varias líneas de texto adyacentes.

Sintaxis:

list_box = Listbox(root, options, ....)

Ejemplo 1: programa de Python que muestra elementos limitados en el cuadro de lista.

# Python program demonstrating
# Multiple selection in Listbox widget
  
  
from tkinter import * 
  
window = Tk()
window.geometry('100x150')
  
# Choosing selectmode as multiple 
# for selecting multiple options
list = Listbox(window, selectmode = "multiple")
  
# Widget expands horizontally and
# vertically by assigning both to 
# fill option
list.pack(expand = YES, fill = "both")
  
# Taking a list 'x' with the items 
# as languages
x = ["C", "C++", "Java", "Python", "R",
     "Go", "Ruby", "JavaScript", "Swift"]
  
for each_item in range(len(x)):
      
    list.insert(END, x[each_item])
      
    # coloring alternative lines of listbox
    list.itemconfig(each_item,
             bg = "yellow" if each_item % 2 == 0 else "cyan")
      
window.mainloop()

Producción :

Desde el cuadro de lista de selección múltiple anterior, el usuario puede seleccionar múltiples opciones. Como hay elementos limitados en el cuadro de lista que se ajustan al tamaño prescrito, el usuario puede ver todos los elementos. Pero si hay más elementos para mostrar al usuario, entonces todos los elementos no son visibles a la vez en un cuadro de lista. Por lo tanto, es necesario adjuntar una barra de desplazamiento a un cuadro de lista si hay más elementos para mostrar en una lista. Esto se puede hacer con la yscrollcommandopción (para desplazarse verticalmente) en Listbox.

Ejemplo 2: programa de Python que muestra el cuadro de lista con la barra de desplazamiento adjunta.

# Python program demonstrating Multiple selection
# in Listbox widget with a scrollbar
  
  
from tkinter import *
  
window = Tk()
window.title('Multiple selection')
  
# for scrolling vertically
yscrollbar = Scrollbar(window)
yscrollbar.pack(side = RIGHT, fill = Y)
  
label = Label(window,
              text = "Select the languages below :  ",
              font = ("Times New Roman", 10), 
              padx = 10, pady = 10)
label.pack()
list = Listbox(window, selectmode = "multiple", 
               yscrollcommand = yscrollbar.set)
  
# Widget expands horizontally and 
# vertically by assigning both to
# fill option
list.pack(padx = 10, pady = 10,
          expand = YES, fill = "both")
  
x =["C", "C++", "C#", "Java", "Python",
    "R", "Go", "Ruby", "JavaScript", "Swift",
    "SQL", "Perl", "XML"]
  
for each_item in range(len(x)):
      
    list.insert(END, x[each_item])
    list.itemconfig(each_item, bg = "lime")
  
# Attach listbox to vertical scrollbar
yscrollbar.config(command = list.yview)
window.mainloop()

Producción :

Publicación traducida automáticamente

Artículo escrito por greeshmanalla 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 *