Как привязать ключи только к одной из вкладок записной книжки - PullRequest
0 голосов
/ 05 августа 2020

Я хотел привязать клавишу «Enter» только к одной из вкладок, вот пример кода

from tkinter import *
from tkinter import ttk


def hello(event):
    print('hello')


window = Tk()
window.geometry('500x500')
tab_control = ttk.Notebook(window)
tab_1 = ttk.Frame(tab_control)
tab_2 = ttk.Frame(tab_control)
tab_control.add(tab_1, text='Tab 1')
tab_control.add(tab_2, text='Tab 2')
tab_control.pack(expand=1, fill='both')

window.bind('<Return>', hello)

window.mainloop()

window.bind() позволит пользователю запускать функцию hello() на обеих вкладках. Но я использую только sh, чтобы привязать его к tab_1.

Я пробовал tab_1.bind('<Return>', hello), но на обеих вкладках нет ответа.

Ответы [ 2 ]

3 голосов
/ 05 августа 2020

Используйте событие <<NotebookTabChanged>>, чтобы получить активную вкладку, затем привяжите событие для вашего приложения:

from tkinter import *
from tkinter import ttk

def hello(event=None):
    print("hello")

def e(event=None):
    if tab_control.index(tab_control.select()) == 0: # bind event for the first tab.
        window.bind("<Return>", hello)
    else:
        window.unbind("<Return>")


window = Tk()
window.geometry('500x500')
tab_control = ttk.Notebook(window)

tab_1 = ttk.Frame(tab_control)
tab_2 = ttk.Frame(tab_control)
tab_control.add(tab_1, text='Tab 1')
tab_control.add(tab_2, text='Tab 2')
tab_control.pack(expand=1, fill='both')

window.bind('<<NotebookTabChanged>>', e)

window.mainloop()
0 голосов
/ 05 августа 2020

Вы можете использовать select() метод Notebook в tkinter. Вот пример:

Предположим, у вас есть записная книжка с двумя рамками. И что бы ни случилось, когда вы нажимаете клавишу Return на клавиатуре, фокус должен быть на одном первом кадре, затем используйте это:

name_of_notebook.select(0)

Здесь 0 - это как номер индекса, поскольку он начинается с ноль.

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

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