[파이썬] tkinter 탭 컨트롤 (`ttk.Notebook`)

When building a GUI application using Tkinter in Python, there are times when you need to organize your content into multiple tabs or sections. Tkinter provides the ttk.Notebook widget which allows you to achieve this easily.

Using ttk.Notebook

To create a tkinter program with a tab control, you will first need to import the necessary packages and modules:

import tkinter as tk
from tkinter import ttk

Next, you can create an instance of the main tkinter window:

root = tk.Tk()
root.title("Tab Control Example")

Within the main window, create a ttk.Notebook widget:

tab_control = ttk.Notebook(root)
tab_control.pack(expand=True, fill='both')

Now, let’s add some tabs to the ttk.Notebook. For each tab, create a frame and use the add() method to add it to the ttk.Notebook:

tab1 = ttk.Frame(tab_control)
tab_control.add(tab1, text='Tab 1')

tab2 = ttk.Frame(tab_control)
tab_control.add(tab2, text='Tab 2')

tab3 = ttk.Frame(tab_control)
tab_control.add(tab3, text='Tab 3')

You now have three tabs (Tab 1, Tab 2, and Tab 3) added to the ttk.Notebook.

To add content to each tab, simply populate the frames with the desired widgets:

label1 = tk.Label(tab1, text='This is Tab 1')
label1.pack()

label2 = tk.Label(tab2, text='This is Tab 2')
label2.pack()

label3 = tk.Label(tab3, text='This is Tab 3')
label3.pack()

Finally, start the main tkinter event loop:

root.mainloop()

Customizing ttk.Notebook

The ttk.Notebook widget provides various options for customization. For example, you can change the appearance of the tabs using options like padding, background, foreground, font, etc. You can also bind events to the tabs such as <<NotebookTabChanged>> to perform specific actions when a tab is selected.

To explore more customization options and features of the ttk.Notebook widget, refer to the official Tkinter documentation.

Conclusion

Using the ttk.Notebook widget in Tkinter, you can create tabbed interfaces for your GUI applications, allowing you to organize and present your content in a clean and intuitive way. It provides a simple and effective solution to manage multiple sections of a GUI and enhance the user experience.

By utilizing this powerful widget, you can create highly interactive and user-friendly applications with ease.