Python / Tkinter: список разделителей Listbox, отключенные элементы, навигация на клавиатуре?

StackOverflow https://stackoverflow.com/questions/4140396

Вопрос

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

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

  2. Как я могу отключить конкретный предмет? Я пытался использовать .itemconfig (индекс, состояние = «отключено») без успеха.

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

  4. Будут ли некоторые из вышеуказанных функциональных возможностей проще реализовать с использованием текстового виджета или виджета TTK TreeView?

Спасибо, Малкольм

Это было полезно?

Решение

  1. вы не можете. Виджет не поддерживает это.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top