Как установить порядок вкладок в приложении tkinter?

Я искал способ установить порядок вкладок в приложении tkinter, над которым я работал. В настоящее время порядок по умолчанию, похоже, работает сверху вниз, но для переключения между элементами управления требуется использовать CTRL + Tab .

Есть ли способ настроить заказ и, более того, изменить вкладку CTRL + Tab только на Tab?

One Solution collect form web for “Как установить порядок вкладок в приложении tkinter?”

Порядок вкладок основан на порядке стекирования, который, в свою очередь, по умолчанию соответствует порядку создания виджетов. Вы можете настроить порядок укладки (и, следовательно, порядок вкладок), используя методы tkraise (или lift ) и lower .

Для этого вам нужно работать без коробки, не нажимая CTRL + Tab . Помните, однако, что вкладка вставляет литеральную вкладку в текстовые виджеты, а не перемещает фокус на другой элемент управления. Конечно, это поведение по умолчанию может быть изменено.

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

Обратите внимание, что команды Tk на родном языке raise и lower , но поскольку raise является зарезервированным словом в Python, его нужно было переименовать в tkinter.

 import Tkinter as tk class SampleApp(tk.Tk): def __init__(self, *args, **kwargs): tk.Tk.__init__(self, *args, **kwargs) e1 = tk.Entry(self) e2 = tk.Entry(self) e3 = tk.Entry(self) e1.insert(0,"1") e2.insert(0,"2") e3.insert(0,"3") e1.pack() e2.pack() e3.pack() # reverse the stacking order to show how # it affects tab order new_order = (e3, e2, e1) for widget in new_order: widget.lift() if __name__ == "__main__": app = SampleApp() app.mainloop() 

Поскольку вы упоминаете, что вам нужно сделать CTRL + Tab , я предполагаю, что вы пытаетесь сфокусировать фокус на ключевой вкладке из текстового виджета. Обычно клавиша табуляции вставляет литеральную вкладку. Если вы хотите изменить фокус, просто добавьте привязку к событию <Tab> .

У Tkinter есть функция, которая вернет имя следующего виджета, который должен получить фокус. К сожалению, для более старых версий Tkinter эта функция не работает. Однако это легко обойти. Вот несколько методов, которые вы можете добавить к вышеуказанному коду:

  def _focusNext(self, widget): '''Return the next widget in tab order''' widget = self.tk.call('tk_focusNext', widget._w) if not widget: return None return self.nametowidget(widget.string) def OnTextTab(self, event): '''Move focus to next widget''' widget = event.widget next = self._focusNext(widget) next.focus() return "break" 
  • Ограничение входа в виджет tk
  • Как отключить управление мышью в списке Tkinter?
  • Есть ли приложение графического интерфейса для геометрии Tkinter / grid?
  • Прозрачный фон в окне Tkinter
  • Разница между tkinter и Tkinter
  • как установить имя пользователя и пароль в tkinter python
  • Используя тот же самый прогресс в tkinter для нескольких вычислений в Python
  • Как установить оправдание в текстовом поле Tkinter
  • Python - лучший язык программирования в мире.