¿Cómo seleccionar al mismo tiempo de dos Listbox?

from Tkinter import * master = Tk() listbox = Listbox(master) listbox.pack() listbox.insert(END, "a list entry") for item in ["one", "two", "three", "four"]: listbox.insert(END, item) listbox2 = Listbox(master) listbox2.pack() listbox2.insert(END, "a list entry") for item in ["one", "two", "three", "four"]: listbox2.insert(END, item) master.mainloop() 

El código anterior crea una ventana tkinter con dos cuadros de lista. Pero hay un problema si desea recuperar los valores de ambos porque, en cuanto selecciona un valor en uno, deselecciona lo que haya seleccionado en el otro.

¿Es esto solo una limitación con la que los desarrolladores tienen que vivir?

Respuesta corta: establezca el valor del atributo exportselection de todos los widgets de cuadro de lista en Falso o cero.

Desde una descripción general de pythonware del widget de listbox :

De forma predeterminada, la selección se exporta al mecanismo de selección X. Si tiene más de un cuadro de lista en la pantalla, esto realmente arruina las cosas para el usuario pobre. Si selecciona algo en un cuadro de lista y luego selecciona algo en otro, se borra la selección original. Por lo general, es una buena idea deshabilitar este mecanismo en tales casos. En el siguiente ejemplo, se utilizan tres cuadros de lista en el mismo cuadro de diálogo:

 b1 = Listbox(exportselection=0) for item in families: b1.insert(END, item) b2 = Listbox(exportselection=0) for item in fonts: b2.insert(END, item) b3 = Listbox(exportselection=0) for item in styles: b3.insert(END, item) 

La documentación definitiva para los widgets tk se basa en el lenguaje Tcl en lugar de en python, pero es fácil de traducir a python. El atributo exportselection se puede encontrar en la página de manual de opciones estándar .

exportselection=0 cuando se define un cuadro de lista parece exportselection=0 este problema.