python - 如何从 tkinter 笔记本中触发选项卡更改功能?
问题描述
一旦在 tkinter 笔记本中选择了不同的选项卡,有谁知道如何触发功能?
这就是我要完成的任务。
假设我有两个选项卡,tab1 和 tab2:
if tab1 is selected:
canvas3.unbind_all()
canvas2.bind_all('<MouseWheel>', lambda event: canvas2.yview_scroll(int(-1 * (event.delta / 120)),"units"))
elif tab 2 is selected:
canvas2.unbind_all()
canvas3.bind_all('<MouseWheel>', lambda event: canvas3.yview_scroll(int(-1 * (event.delta / 120)), "units"))
解决方案
您可以在笔记本上绑定<<NotebookTabChanged>>
事件:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
nb = ttk.Notebook(root, width=800, height=600)
nb.pack()
frame1 = ttk.Frame(nb)
frame2 = ttk.Frame(nb)
nb.add(frame1, text='Tab1')
nb.add(frame2, text='Tab2')
def on_tab_change(event):
tab = event.widget.tab('current')['text']
if tab == 'Tab1':
#canvas3.unbind_all()
#canvas2.bind_all('<MouseWheel>', lambda event: canvas2.yview_scroll(int(-1 * (event.delta / 120)),"units"))
elif tab == 'Tab2':
#canvas2.unbind_all()
#canvas3.bind_all('<MouseWheel>', lambda event: canvas3.yview_scroll(int(-1 * (event.delta / 120)), "units"))
nb.bind('<<NotebookTabChanged>>', on_tab_change)
root.mainloop()
推荐阅读
- azure - 我们可以通过 ADF 将 json 数组解析并复制到多个 sql 表中吗
- python-3.x - 将子图向同一方向移动
- javascript - js 新手 - 了解 async await 语法
- vue.js - 在 Nuxt vuetify 中单击单个按钮时会加载每个按钮
- applepay - 在 onvalidatemerchant 之后立即调用 OnCancel
- c# - 使用转换类 json 属性进行翻译
- ios - iOS 14 之后 Firebase 中的 Apple Search Ads 广告系列归因
- python - 如何从第7列对python文件中的所有记录进行排序?
- android - 5秒后Android返回过渡不起作用
- rust - 为具有多个段的静态文件提供服务