こんにちは!今回は PythonのTkinterを使って、アプリにメニューを追加する方法 について解説します。
メニューを追加すると、アプリの使い勝手が大幅に向上します。
この記事では、以下の2つのメニューの作成方法を学びます。
✅ メニューバー(アプリ上部に表示されるメニュー)
✅ コンテキストメニュー(右クリックで表示されるメニュー)
それでは、さっそく見ていきましょう!
1. Tkinterでメニューバーを作成する
メニューバーとは?
メニューバーは、アプリの上部に配置されるメニューで、「ファイル」「編集」などのオプションを表示する部分です。
Tkinterでは、Menu
クラスを使って簡単に作成できます。
メニューバーの基本コード
以下のコードで、シンプルなメニューバーを作成できます。
from tkinter import Tk, Menu
def new_file():
print("新しいファイルを作成しました")
def open_file():
print("ファイルを開きました")
root = Tk()
menubar = Menu(root)
file_menu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="ファイル", menu=file_menu)
file_menu.add_command(label="新規作成", command=new_file)
file_menu.add_command(label="開く", command=open_file)
file_menu.add_separator()
file_menu.add_command(label="終了", command=root.quit)
root.config(menu=menubar)
root.mainloop()
コードの解説
🔹 Menu(root)
でメニューバーを作成
🔹 add_cascade(label="ファイル", menu=file_menu)
でメニューバーに「ファイル」メニューを追加
🔹 add_command()
で各メニュー項目(新規作成、開く、終了)を追加
このコードを実行すると、ウィンドウの上部に 「ファイル」メニュー が表示され、クリックすると選択肢が出てきます!
2. コンテキストメニュー(右クリックメニュー)の作成
コンテキストメニューとは?
コンテキストメニューとは、 右クリック で表示されるメニューのことです。
これを実装すると、より直感的な操作ができるようになります!
コンテキストメニューの基本コード
以下のコードで、右クリック時にメニューを表示できます。
from tkinter import Tk, Menu
def copy_text():
print("テキストをコピーしました")
def paste_text():
print("テキストを貼り付けました")
root = Tk()
menubar = Menu(root)
file_menu = Menu(menubar, tearoff=0)
context_menu = Menu(root, tearoff=0)
context_menu.add_command(label="コピー", command=copy_text)
context_menu.add_command(label="貼り付け", command=paste_text)
def show_context_menu(event):
context_menu.post(event.x_root, event.y_root)
root.bind("<Button-3>", show_context_menu)
root.mainloop()
コードの解説
🔹 Menu(root, tearoff=0)
でコンテキストメニューを作成
🔹 context_menu.add_command()
で「コピー」「貼り付け」などの項目を追加
🔹 root.bind("<Button-3>", show_context_menu)
で 右クリック時にメニューを表示 する
このコードを実行すると、ウィンドウ内で 右クリック するとメニューが表示されるようになります!
3. メニューのカスタマイズ(アイコンの追加)
Tkinterでは、メニューに アイコンを追加 することも可能です!
例えば、「コピー」メニューにアイコンを付けるには、次のように記述します。
from tkinter import Tk, Menu
from tkinter import PhotoImage
def copy_text():
print("テキストをコピーしました")
def paste_text():
print("テキストを貼り付けました")
root = Tk()
menubar = Menu(root)
file_menu = Menu(menubar, tearoff=0)
copy_icon = PhotoImage(file="./copy.png")
context_menu = Menu(root, tearoff=0)
context_menu.add_command(label="コピー", image=copy_icon, command=copy_text)
context_menu.add_command(label="貼り付け", command=paste_text)
def show_context_menu(event):
context_menu.post(event.x_root, event.y_root)
root.bind("<Button-3>", show_context_menu)
root.mainloop()
ポイント
🔹 PhotoImage(file="画像ファイル")
で画像を読み込む
🔹 image=copy_icon
で テキストとアイコンを並べて表示 できる
これを使えば、より 視覚的にわかりやすいメニュー を作成できます!
まとめ
今回は、Tkinterで メニューを追加する方法 を学びました!
✅ メニューバー を作る → Menu(root)
を使う
✅ コンテキストメニュー を作る → post(event.x_root, event.y_root)
で表示
✅ メニューのカスタマイズ → アイコンを追加する
メニューをうまく活用すれば、アプリの 使い勝手が向上 し、より直感的な操作が可能になります。
ぜひ、今回の内容を参考にして、自分のアプリに オリジナルのメニュー を追加してみてください!
それでは、楽しいコーディングを!✨