このチュートリアルでは、グラフィカルユーザーインターフェース(GUI)構築のためのPythonライブラリであるTkinterで、メニューバーの作成と使用方法を説明します。基本的なTkinterウィジェット(フレームやラベルなど)に関する予備知識があると役立ちます。
目次
1. 基本的なメニューバーの作成
「ファイル」メニュー、「新規」、「開く」、「終了」オプションを含むシンプルなメニューバーを構築することから始めましょう。この最初の例では、視覚的な構造のみに焦点を当て、メニュー項目はまだ何も実行しません。
import tkinter as tk
root = tk.Tk()
root.title("Tkinter Menubar Example")
menubar = tk.Menu(root)
filemenu = tk.Menu(menubar, tearoff=0)
filemenu.add_command(label="New")
filemenu.add_command(label="Open")
filemenu.add_separator()
filemenu.add_command(label="Exit")
menubar.add_cascade(label="File", menu=filemenu)
root.config(menu=menubar)
root.mainloop()
このコードは、メインウィンドウ(root
)、メニューバー、「ファイル」メニューを作成します。tearoff=0
はメニューが切り離されるのを防ぎます。add_command
はメニュー項目を追加し、add_separator
は視覚的なセパレータを挿入し、add_cascade
は「ファイル」メニューをメニューバーに統合します。root.config(menu=menubar)
はメニューバーを表示します。
2. メニュー項目への機能の追加
次に、機能を備えたメニュー項目を強化しましょう。「終了」コマンドをアプリケーションの終了に接続し、「新規」と「開く」のアクションを追加します。
import tkinter as tk
def new_file():
print("New file action triggered!")
def open_file():
print("Open file action triggered!")
def exit_app():
root.destroy() # root.quit()よりも推奨される方法
root = tk.Tk()
root.title("Tkinter Menubar Example with Commands")
menubar = tk.Menu(root)
filemenu = tk.Menu(menubar, tearoff=0)
filemenu.add_command(label="New", command=new_file)
filemenu.add_command(label="Open", command=open_file)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=exit_app)
menubar.add_cascade(label="File", menu=filemenu)
root.config(menu=menubar)
root.mainloop()
このコードは、new_file
、open_file
、exit_app
関数を定義します。これらの関数は、command
引数を介してメニュー項目にリンクされています。「新規」または「開く」をクリックすると、それぞれの関数がトリガーされます。「終了」はアプリケーションを閉じます。プレースホルダーのprint文は、必要な機能に置き換えてください。「開く」をファイルダイアログにリンクするなどです。
3. 高度なメニューバーテクニック(任意)
より複雑でユーザーフレンドリーなアプリケーションを作成するには、次の高度なテクニックを検討してください。
- サブメニュー:より良い整理のためにネストされたメニューを作成します。
- チェックボタンメニュー項目:ユーザーがオプションのオン/オフを切り替えることができます。
- ラジオボタンメニュー項目:相互に排他的な選択肢を提供します。
- キーボードショートカット:より迅速なアクセスのため、メニュー項目にキーボードショートカットを割り当てます(
add_command
のunderline
とaccelerator
オプションを使用)。 - イベント処理:より高度なイベント処理テクニックを使用して、ユーザーとのインタラクションを管理します。
これらの高度な機能の詳細については、Tkinterのドキュメントを参照してください。