如何将按键仅绑定到笔记本选项卡之一

Che*_*Bin 0 python tkinter

我想将“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()
Run Code Online (Sandbox Code Playgroud)

window.bind()将允许用户在两​​个选项卡中运行hello()功能。但我只想将它绑定到tab_1.

我尝试过tab_1.bind('<Return>', hello),但两个选项卡中都没有任何响应。

jiz*_*AMA 5

使用<<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()
Run Code Online (Sandbox Code Playgroud)