Python / Tkinter: разделители списка, отключенные элементы, навигация с помощью клавиатуры? - PullRequest
4 голосов
/ 10 ноября 2010

Я изучаю виджет Tkinter Listbox и не смог найти решения для следующих функций:

  1. Как я могу создать невыбираемые элементы горизонтального разделителя, например. разделители, эквивалентные .add_separator () виджета Меню Tkinter? (Использование символов, таких как тире и подчеркивание, выглядит ужасно).

  2. Как отключить определенный элемент? Я попытался использовать .itemconfig (index, state = 'disabled') безуспешно.

  3. Как включить навигацию с помощью клавиатуры, например, когда пользовательский ввод с клавиатуры автоматически прокручивает один вперед до ближайшего элемента, который начинается с текста, набранного пользователем? Должен ли я связывать (', ...) и управлять этим поведением самостоятельно?

  4. Было бы проще реализовать некоторые из вышеперечисленных функций с помощью виджета «Текст» или виджета «Древовидная структура» ttk?

Спасибо, Malcolm

1 Ответ

5 голосов
/ 10 ноября 2010
  1. вы не можете.Виджет не поддерживает это.

  2. Вы не можете отключить определенные элементы, виджет не поддерживает атрибут состояния.При этом вы можете контролировать выбор и делать соответствующие действия, если пользователь выбирает что-то, что отключено, и использовать передний план элемента для обозначения неработоспособности.

  3. Вам потребуетсяпривязка к событиям нажатия клавиш и управлять поведением самостоятельно.Это не особенно сложно, просто немного утомительно.

  4. текстовый виджет может быть вашим лучшим выбором, хотя вам придется добавить привязки, чтобы имитировать привязки по умолчанию для списка.

Итог: Tkinter не предоставляет ничего, что напрямую поддерживает то, что вы хотите сделать, но строительные блоки все есть.Вы просто должны будете построить его самостоятельно.

...