Python: Focus on ttk.Notebook tabs Python: Focus on ttk.Notebook tabs tkinter tkinter

Python: Focus on ttk.Notebook tabs


I was having the same problem. What I found is the 'select' method for notebooks (ttk.Notebook.select(someTabFrame)) solves this problem:

import ttk, TkintermainWindow = Tkinter.Tk()mainFrame = Tkinter.Frame(mainWindow, name = 'main-frame')mainFrame.pack(fill = Tkinter.BOTH) # fill both sides of the parentnb = ttk.Notebook(mainFrame, name = 'nb')nb.pack(fill = Tkinter.BOTH, padx=2, pady=3) # fill "master" but pad sidestab1Frame = Tkinter.Frame(nb, name = 'tab1')Tkinter.Label(tab1Frame, text = 'this is tab 1').pack(side = Tkinter.LEFT)nb.add(tab1Frame, text = 'tab 1')tab2Frame = Tkinter.Frame(nb, name = 'tab2')Tkinter.Label(tab2Frame, text = 'this is tab 2').pack(side = Tkinter.LEFT)nb.add(tab2Frame, text = 'tab 2')nb.select(tab2Frame) # <-- here's what you're looking formainWindow.mainloop()

python docs for ttk.Notebook:https://docs.python.org/2/library/ttk.html#ttk.Notebook

I also used this blog post as a model for my code:http://poquitopicante.blogspot.com/2013/06/blog-post.html


This code based on wordsforthewise's answer to this question. Here you can find example of using select as get and set function, it shown by button that switch between 2 tabs.

small improvement:

import ttk, Tkinterfrom pango import Weightfrom Tkinter import Buttontab2Frame = Nonetab1Frame = Nonedef switchTab():    if nb.select()[-1] == "1":        nb.select(tab2Frame)    elif nb.select()[-1] == "2":        nb.select(tab1Frame)mainWindow = Tkinter.Tk()mainWindow.geometry("%dx%d+0+0" % (200, 200))mainFrame = Tkinter.Frame(mainWindow, name = 'main-frame')mainFrame.pack(fill = Tkinter.BOTH) # fill both sides of the parentbutton = Button(mainWindow, text = "Switch", command = switchTab)button.configure(width = 15, activebackground = "#6f6Fff")button.pack()nb = ttk.Notebook(mainFrame, name = 'nb')nb.pack(fill = Tkinter.BOTH, padx=2, pady=3) # fill "master" but pad sidestab1Frame = Tkinter.Frame(nb, name = 'tab1')Tkinter.Label(tab1Frame, text = 'this is tab 1').pack(side = Tkinter.LEFT)nb.add(tab1Frame, text = 'tab 1')tab2Frame = Tkinter.Frame(nb, name = 'tab2')Tkinter.Label(tab2Frame, text = 'this is tab 2').pack(side = Tkinter.LEFT)nb.add(tab2Frame, text = 'tab 2')mainWindow.mainloop()