ここではTkinterの「Notebook」の使用例をまとめています。
この記事の対象
Notebookとは?
TkinterのNotebookは、複数のタブを持つことができるウィジェットになります。各タブは異なるコンテンツを表示することが可能です。タブを切り替えることで、異なる情報や機能にアクセスすることができます。
基本的な型
ttk.Notebook(root)
Notebook(root)はクラスをインスタンス化します。次に、各タブを作成し、Notebookに追加していきます。各タブには、タイトル(表示されるタブのテキスト)とコンテンツ(表示されるウィジェット)があります。
タブの作成
import tkinter as tk
from tkinter import ttk
#1---ウィンドウの作成
root = tk.Tk()
root.title("Tab Test")
#2---タブコンテナの作成
tab_control = ttk.Notebook(root)
#3---タブ1の作成
tab1 = ttk.Frame(tab_control)
tab_control.add(tab1, text='タブ1')
#4---タブ1のコンテンツ
label1 = tk.Label(tab1, text='これはタブ1のコンテンツです', padx=10, pady=10, font=('Arial', 14))
label1.pack(fill='both', expand=True)
#5---タブ2の作成
tab2 = ttk.Frame(tab_control)
tab_control.add(tab2, text='タブ2')
#6---タブ2のコンテンツ
label2 = tk.Label(tab2, text='これはタブ2のコンテンツです', padx=10, pady=10, font=('Arial', 14))
label2.pack(fill='both', expand=True)
label3 = tk.Label(tab2, text='これはタブ2のサブコンテンツです', padx=10, pady=10, font=('Arial', 12))
label3.pack(fill='both', expand=True)
#7---タブコンテナの配置
tab_control.pack(fill='both', expand=True)
#8---ウィンドウのメインループ
root.mainloop()
上記のプログラムは、タブを作成して、タブごとにラベルを配置しています。
以下は解説になります。
#1---ウィンドウの作成
root = tk.Tk()
root.title("Tab Test")
1の部分ではウィンドウを作成しています。
#2---タブコンテナの作成
tab_control = ttk.Notebook(root)
2の部分ではタブのコンテナを作成しています。「ttk.Notebook(root)」としてrootを引数に設定しています。
#3---タブ1の作成
tab1 = ttk.Frame(tab_control)
tab_control.add(tab1, text='タブ1')
3の部分では1つ目のタブを作成しています。
#4---タブ1のコンテンツ
label1 = tk.Label(tab1, text='これはタブ1のコンテンツです', padx=10, pady=10, font=('Arial', 14))
label1.pack(fill='both', expand=True)
4の部分では1つ目のタブ内のコンテンツであるラベルを配置しています。
#5---タブ2の作成
tab2 = ttk.Frame(tab_control)
tab_control.add(tab2, text='タブ2')
5の部分では2つ目のタブを作成しています。
#6---タブ2のコンテンツ
label2 = tk.Label(tab2, text='これはタブ2のコンテンツです', padx=10, pady=10, font=('Arial', 14))
label2.pack(fill='both', expand=True)
label3 = tk.Label(tab2, text='これはタブ2のサブコンテンツです', padx=10, pady=10, font=('Arial', 12))
label3.pack(fill='both', expand=True)
6の部分では2つ目のタブ内のコンテンツであるラベルを2つ作成しています。
#7---タブコンテナの配置
tab_control.pack(fill='both', expand=True)
7の部分ではタブのコンテナを配置しています。
#8---ウィンドウのメインループ
root.mainloop()
8の部分ではウィンドウのメインループを指定しています。