Как выбрать одновременно из двух 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()

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

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


person directedition    schedule 16.04.2009    source источник


Ответы (2)


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

Из обзора программного обеспечения python виджета списка:

По умолчанию выбор экспортируется в механизм выбора 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 можно найти на странице руководства по стандартным параметрам.

person Jason Coon    schedule 16.04.2009

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

person directedition    schedule 16.04.2009