PythonでGUI(グラフィカルユーザーインターフェース)アプリケーションを作る際によく使用されるのが「Tkinter」です。本記事では、Tkinterを使って「メニューバー」を追加する具体的な方法について、子供から大人まで分かりやすく丁寧に解説します。メニューとは、アプリケーションの上部に表示される「ファイル」「編集」などのリストのことです。本記事を読むことで、Pythonで簡単にメニュー付きのGUIアプリケーションを作成できるようになります。
Tkinterとは?GUI作成に便利なPython標準ライブラリ
Tkinterは、Pythonに標準で搭載されているGUIアプリケーション作成用のライブラリです。GUIとは「Graphical User Interface(グラフィカル・ユーザー・インターフェース)」の略で、ボタンやメニュー、ウィンドウなど、視覚的に操作できる画面のことを指します。
Tkinterを使うことで、C言語やC++などで行うような複雑なGUI構築をシンプルなPythonコードで実現できます。インストール不要で、PythonをインストールするだけでTkinterも使える点が大きなメリットです。
Tkinter(GUI)について詳しく知りたい方は、ぜひこちらの記事もご覧ください。
Tkinterメニューの使い方|メニューバーの基本構造と仕組み
Tkinterのメニューは「Menuクラス」を使用して作成します。メニューは主に次の3つの要素から成り立っています。
- メニューバー(親メニュー)
- ドロップダウンメニュー(サブメニュー)
- メニューアイテム(コマンド)
メニューバーは、アプリケーションの上部に設置される「ファイル」「編集」などの項目部分です。そのメニューをクリックすると、サブメニュー(プルダウンメニュー)が表示され、さらにその中に「新規作成」「保存」などの具体的な操作項目(コマンド)を追加します。
PythonでGUIにメニューバーを追加する方法とは?基本コードの解説
それでは、Tkinterで実際にメニューバーを作成する基本コードを見てみましょう。
import tkinter as tk
# ウィンドウの作成
root = tk.Tk()
root.title("Tkinterメニューの使い方")
root.geometry("500x500")
# メニューバーの作成
menubar = tk.Menu(root)
# ファイルメニューの作成
file_menu = tk.Menu(menubar, tearoff=0)
file_menu.add_command(label="新規作成")
file_menu.add_command(label="開く")
file_menu.add_command(label="保存")
file_menu.add_separator()
file_menu.add_command(label="終了", command=root.quit)
# メニューバーに「ファイル」メニューを追加
menubar.add_cascade(label="ファイル", menu=file_menu)
# メニューバーをウィンドウに設定
root.config(menu=menubar)
# メインループ
root.mainloop()

このコードでは、以下の手順でメニューバーを作成しています。
tk.Menu(root)
でメニューバーを作成add_cascade
でメニューバーに「ファイル」という項目を追加file_menu.add_command
でサブメニューにコマンド(新規作成、開く、保存、終了)を追加
また、tearoff=0
はメニューが独立してウィンドウから切り離せないようにする設定です。
Tkinterメニューの応用|サブメニューやチェックボタンの追加方法
基本的なメニューの作成ができたら、次は応用として「サブメニュー」や「チェックボタン付きメニュー」の作り方も覚えましょう。
サブメニューの作成
# 編集メニューの作成
edit_menu = tk.Menu(menubar, tearoff=0)
edit_menu.add_command(label="元に戻す")
edit_menu.add_command(label="やり直し")
# サブメニューの作成
find_menu = tk.Menu(edit_menu, tearoff=0)
find_menu.add_command(label="検索")
find_menu.add_command(label="置換")
# 編集メニューにサブメニューを追加
edit_menu.add_cascade(label="検索・置換", menu=find_menu)
# メニューバーに「編集」メニューを追加
menubar.add_cascade(label="編集", menu=edit_menu)

このように add_cascade
を使うことで、メニューの中にさらにサブメニューをネスト(入れ子)することが可能です。
チェックボタン付きメニューの作成
# 表示メニューの作成
view_menu = tk.Menu(menubar, tearoff=0)
show_line_numbers = tk.BooleanVar()
view_menu.add_checkbutton(label="行番号の表示", variable=show_line_numbers)
# メニューバーに「表示」メニューを追加
menubar.add_cascade(label="表示", menu=view_menu)

add_checkbutton
を使うことで、チェックボックス付きのメニュー項目も簡単に作成できます。
PythonのGUI開発におけるメニュー活用のポイント
Tkinterでメニューバーを作成する際には、以下のポイントを押さえるとより使いやすいアプリになります。
- ユーザーが直感的に操作できる構造にする:一般的なアプリに倣って「ファイル」「編集」「表示」などのメニュー構成にする
- ショートカットキーの追加:
add_command
でaccelerator
パラメータを使えば、キーボードショートカットを設定可能 - 状態の制御:メニュー項目を無効(
state="disabled"
)にすることで、特定条件で非活性化できる
これらを活用することで、初心者でも実用的なGUIアプリケーションが作成しやすくなります。
まとめ
今回は「Tkinterメニューの使い方|PythonでGUIにメニューバーを追加する方法とは?」というテーマで、メニューバーの基本からサブメニュー、チェックボタンまで幅広く解説しました。
メニューは、GUIアプリケーションのユーザー体験を大きく左右する大事なパーツです。PythonとTkinterを使えば、初心者でも簡単にメニュー付きのアプリを作ることができます。ぜひ今回のコード例を参考に、オリジナルのアプリケーション開発に挑戦してみてください。