Как выбрать в то же время из двух списков?

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()

В приведенном выше коде создается окно tkinter с двумя списками. Но есть проблема, если вы хотите получить значения из обоих, потому что, как только вы выберете значение в одном, он отменит выбор, выбранный вами в другом.

Это просто ограничение, с которым разработчикам приходится жить?

Ответы

Ответ 1

Короткий ответ: установите значение атрибута exportselection для всех виджетов списка, чтобы оно было ложным или нулевым.

От обзор pythonware виджета списка:

По умолчанию выбор экспортируется к механизму выбора X. если ты имеют более одного списка на экран, это действительно бесполезно для бедных пользователей. Если он выбирает что-то в одном списке, а затем выбирает что-то в другом, оригинальный выбор очищается. это обычно хорошая идея отключить эту механизма в таких случаях. в в следующем примере три списка используется в том же диалоговом окне:

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)

Окончательная документация для виджетов tk основана на языке Tcl, а не на python, но его легко перевести на python. Атрибут exportselection можно найти на странице стандартных параметров.

Ответ 2

exportselection=0 при определении списка, похоже, позаботится об этой проблеме.