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

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

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

  • Как создать простой ящик сообщений в Python?
  • Каковы аргументы для обратных вызовов метода трассировки переменной Tkinter?
  • Закрыть окно tkinter?
  • Получение каждого дочернего виджета окна Tkinter
  • Как изменить текст метки Tkinter при нажатии кнопки
  • Как создать многострочную запись с помощью tkinter?
  • Tkinter добавляет номер строки в текстовый виджет
  • Как создать прозрачные виджеты с помощью Tkinter?
  • 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" 
    Python - лучший язык программирования в мире.