Tkinterメニューの使い方|PythonでGUIにメニューバーを追加する方法とは?

Tkinterメニューの使い方|PythonでGUIにメニューバーを追加する方法とは?

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とは?Python標準GUIモジュールの特徴と使い方

Tkinterメニューの使い方|メニューバーの基本構造と仕組み

Tkinterのメニューは「Menuクラス」を使用して作成します。メニューは主に次の3つの要素から成り立っています。

  1. メニューバー(親メニュー)
  2. ドロップダウンメニュー(サブメニュー)
  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()
PythonでGUIにメニューバーを追加する方法とは?基本コードの解説
実行結果

このコードでは、以下の手順でメニューバーを作成しています。

  • 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_commandaccelerator パラメータを使えば、キーボードショートカットを設定可能
  • 状態の制御:メニュー項目を無効(state="disabled")にすることで、特定条件で非活性化できる

これらを活用することで、初心者でも実用的なGUIアプリケーションが作成しやすくなります。

まとめ

今回は「Tkinterメニューの使い方|PythonでGUIにメニューバーを追加する方法とは?」というテーマで、メニューバーの基本からサブメニュー、チェックボタンまで幅広く解説しました。

メニューは、GUIアプリケーションのユーザー体験を大きく左右する大事なパーツです。PythonとTkinterを使えば、初心者でも簡単にメニュー付きのアプリを作ることができます。ぜひ今回のコード例を参考に、オリジナルのアプリケーション開発に挑戦してみてください。