【Python】Tkinterでメニューバーを作成する方法

Menuクラスは、Tkinterでメニューバーを作成するためのクラスです。

Menuクラスを使ってウィンドウ上にメニューバーを作成する方法を紹介します。

メニューバーを作成する方法

Tkinterを使いウィンドウを作成します。

import tkinter as tk

root = tk.Tk()
root.title('Menu')
root.geometry('300x300')

root.mainloop()

ウィンドウの作成方法に関しては下記の記事でまとめていますのでこちらをご覧ください。

メニューを作成するには、Menuクラスを使いメニューバーを作成し、rootウィンドウ上にメニューバーを配置するコードが必要となります。

menu_bar = tk.Menu(root)
root.config(menu=menu_bar)

このコードは、’Menu()’クラスを使いメニューバーを追加するコードとrootウィンドウ上にメニューバーを配置するコードが記入されています。

以下は、’Menu()’クラスを使用しメニューバーをrootウィンドウ上に作成した例です。

import tkinter as tk

root = tk.Tk()
root.title('Menu')
root.geometry('300x300')

menu_bar = tk.Menu(root)
root.config(menu=menu_bar)

root.mainloop()

しかし、この状態で実行しても実行結果にはメニューバーは表示されません。

実行結果

この後、更にコードを追加しメニューバー内にメニューのテキストを追加したりサブメニューの作成方法などを紹介します・

親メニューの作成方法

親メニューを作成するには、’Menu()’クラスと’add_cascade()’メソッドを使い親メニューを作成します。

#ファイルメニュー
file_menu = tk.Menu(menu_bar, tearoff=False)
menu_bar.add_cascade(label="ファイル", menu=file_menu)

#ヘルプメニュー
help_menu = tk.Menu(menu_bar, tearoff=False)
menu_bar.add_cascade(label="ヘルプ", menu=help_menu)

‘Menu'()クラスを使い親となるメニューバーに’file_menu’と’help_menu’を追加しています。

更に’add_cascade()’メソッドを使うことで’menu_bar’という親メニューに’file_menu’と’help_menu’という子メニューを追加しています。

引数には、’label’を使い親メニューに表示するテキストを指定しています。

‘menu’引数には、子メニューのインスタンスを指定します。

以下は、’Menu()’クラスと’add_cascade()’メソッドを使用しメニューバーにファイルとヘルプのメニューを追加しています。

import tkinter as tk

root = tk.Tk()
root.title('Menu')
root.geometry('300x300')

menu_bar = tk.Menu(root)
root.config(menu=menu_bar)

#ファイルメニュー
file_menu = tk.Menu(menu_bar, tearoff=False)
menu_bar.add_cascade(label="ファイル", menu=file_menu)

#ヘルプメニュー
help_menu = tk.Menu(menu_bar, tearoff=False)
menu_bar.add_cascade(label="ヘルプ", menu=help_menu)

root.mainloop()
実行結果

Menuクラスの引数について

‘Menu()’クラスの引数はメニューが関連付けられる親ウィジェット(トップレベルウィンドウまたはメニューバー)を指定します。

また、’tearoff’というオプションは、メニューを切り離し可能なフローティングウィンドウとして表示するかどうかを制御することが出来ます。

‘tearoff’を入れない場合オプションは’True’に設定されており、ユーザーがメニューを独立したウィンドウとして表示することができます。

独立したウィンドウメニューになる

通常のメニューを使いたい場合は、’tearoff=False’を入れることでメニューは通常のメニューとして表示されます。

通常メニュー

サブメニューを作成する方法

サブメニューを作成するのは’add_command()’メソッドを追加することでサブメニューを追加することが出来ます。

#ファイルメニュー
file_menu = tk.Menu(menu_bar, tearoff=False)
menu_bar.add_cascade(label="ファイル", menu=file_menu)
file_menu.add_command(label="ファイルを開く")
file_menu.add_command(label="フォルダーを開く")

#ヘルプメニュー
help_menu = tk.Menu(menu_bar, tearoff=False)
menu_bar.add_cascade(label="ヘルプ", menu=help_menu)
help_menu.add_command(label="バージョン情報")

‘add_command()’メソッドを使い引数には、’label’引数を使いサブメニューのテキストを設定しています。

以下は、’add_command()’メソッドを使いサブメニューを設定したコードとなっています。

import tkinter as tk

root = tk.Tk()
root.title('Menu')
root.geometry('300x300')

menu_bar = tk.Menu(root)
root.config(menu=menu_bar)

#ファイルメニュー
file_menu = tk.Menu(menu_bar, tearoff=False)
menu_bar.add_cascade(label="ファイル", menu=file_menu)
file_menu.add_command(label="ファイルを開く")
file_menu.add_command(label="フォルダーを開く")

#ヘルプメニュー
help_menu = tk.Menu(menu_bar, tearoff=False)
menu_bar.add_cascade(label="ヘルプ", menu=help_menu)
help_menu.add_command(label="バージョン情報")

root.mainloop()
実行結果

親メニューをクリックすることでサブメニューが表示されます。