【Tkinter入門】メニューバーとコンテキストメニューを追加して、アプリの操作性を向上させよう!

Python

こんにちは!今回は 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) で表示
メニューのカスタマイズ → アイコンを追加する

メニューをうまく活用すれば、アプリの 使い勝手が向上 し、より直感的な操作が可能になります。
ぜひ、今回の内容を参考にして、自分のアプリに オリジナルのメニュー を追加してみてください!

それでは、楽しいコーディングを!✨

タイトルとURLをコピーしました