Как выбрать одновременно из двух списков? - PullRequest
14 голосов
/ 16 апреля 2009
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 с двумя списками. Но есть проблема, если вы хотите извлечь значения из обоих, потому что, как только вы выбираете значение в одном, оно отменяет выбор того, что вы выбрали в другом.

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

Ответы [ 2 ]

31 голосов
/ 16 апреля 2009

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

5 голосов
/ 16 апреля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...