KURORO BLOGのロゴ

このエントリーをはてなブックマークに追加
もう間違えない!?Tkinterで使われるmenubarの作成手順を徹底解説!?

もう間違えない!?Tkinterで使われるmenubarの作成手順を徹底解説!?

今回はTkinterで使われるmenubarの作成手順を徹底解説いたします。menubarの使い方がわからない、コードを踏まえて学習したい方へおすすめです。是非最後までご一読ください。

目次
  1. そもそもTkinterで使われるmenubarとは?
    1. menubarが利用される理由
  2. menubarの作り方【4ステップ】
    1. Windowを作成する
    2. menubarを作成して、menubarをWindow内のmenubarとする
    3. サブメニューを作成する
    4. 2.で作成したmenubarへ、Fileと名付けられたメインメニューを追加する。そしてFileと名付けられたメインメニュー内に、3で作成したサブメニューを追加する
    5. 完成コード
  3. menubar内のメニューを操作する関数
    1. add_command
    2. add_cascade
    3. add_radiobutton
    4. add_checkbutton
    5. add_separator
    6. index
    7. insert_checkbutton
    8. insert_command
    9. insert_cascade
    10. insert_radiobutton
    11. insert_separator
  4. まとめ
  5. 参考文献
目次を開く⬇︎

そもそもTkinterで使われるmenubarとは?

Tkinterで使われるmenubarとは、パソコン上に表示される選択肢を意味します。普段使いでは「パソコンの左上に表示される選択肢」と考えると良いでしょう。

別名でmenuと呼ばれたりします。

具体的なmenubarを画像を用いて説明すると、以下の緑色枠部分を表します。

menubarが利用される理由

menubarが利用される理由として、

  • パソコン操作に困った場合の、お助け情報がまとまっている
  • 便利な機能が一元管理されている
  • 普段使いする操作項目が並んでいて、探す手間を省ける

などがあります。

確かに普段使いする操作項目が並んでいると、覚えることが減って手間が省けますね。

menubarの作り方【4ステップ】

menubarを作るためには、

  1. Windowを作成する
  2. menubarを作成して、menubarをWindow内のmenubarとする
  3. サブメニューを作成する
  4. 2.で作成したmenubarへ、Fileと名付けられたメインメニューを追加する。そしてFileと名付けられたメインメニュー内に、3で作成したサブメニューを追加する

の4ステップが必要になります。順に見ていきましょう。

Windowを作成する

menubarを取り付けるための、Windowを作成します。

1import tkinter as tk
2
3class Application(tk.Frame):
4    def __init__(self, master=None):
5        # Windowの初期設定を行う。
6        super().__init__(master)
7        # 1. Windowを作成する。
8        # Windowの画面サイズを設定する。
9        # geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/
10        self.master.geometry("300x200")
11
12    # "Exit"と名付けられたサブメニューを選択した場合に、実行する関数
13    def onExit(self):
14        # Windowを閉じる。
15        self.quit()
16
17# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
18if __name__ == "__main__":
19    # Windowを生成する。
20    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
21    root = tk.Tk()
22    app = Application(master=root)
23    # Windowをループさせて、継続的にWindow表示させる。
24    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
25    app.mainloop()

menubarを作成して、menubarをWindow内のmenubarとする

menubarの作成には、tk.Menu()を使用します。「Windowを作成する」で紹介したコード内のself.master.geometry("300x200")の下へ、以下のコードを貼り付けてください。

1# 2. menubarを作成して、menubarをWindow内のmenubarとする。
2# Menuを作成する。menuBarとする。
3menuBar = tk.Menu()
4# Window内のmenubarを、先ほど作成したmenuBarとする。
5self.master.config(menu=menuBar)

tk.Menu()menubarを作成したのちに、.config関数を用いて、Window内のmenubarとしてmenuBarを登録します。

サブメニューを作成する

メインメニュー内に配置するための、サブメニューを作成します。「menubarを作成して、menubarをWindow内のmenubarとする」で紹介したコード内のself.master.config(menu=menuBar)の下へ、以下のコードを貼り付けてください。

1# 3. サブメニューを作成する。
2# サブメニューとは? : https://kotobank.jp/word/%E3%82%B5%E3%83%96%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC-3747#:~:text=%E9%9A%8E%E5%B1%A4%E7%9A%84%E3%81%AB%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C,%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E6%93%8D%E4%BD%9C%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%81%A7%E3%81%8D%E3%82%8B%E3%80%82
3# Menuを作成する。fileMenuとする。
4fileMenu = tk.Menu()
5# label : サブメニュー名の設定
6# command : サブメニューが選択された場合に、実行する関数を設定。self.onExitとする。
7fileMenu.add_command(label="Exit", command=self.onExit)

2.で作成したmenubarへ、Fileと名付けられたメインメニューを追加する。そしてFileと名付けられたメインメニュー内に、3で作成したサブメニューを追加する

最後にmenubarへメインメニューの追加 + メインメニュー内へサブメニューの追加を行います。「サブメニューを作成する」で紹介したコード内のfileMenu.add_command(label="Exit", command=self.onExit)の下へ、以下のコードを貼り付けてください。

1# 4. 2.で作成したmenubarへ、Fileと名付けられたメインメニューを追加する。そしてFileと名付けられたメインメニュー内に、3で作成したサブメニューを追加する。
2# メインメニューとは? : https://kotobank.jp/word/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC-9213
3# label : メインメニュー名の設定
4# menu : メインメニュー内に含む、サブメニュー
5menuBar.add_cascade(label="File", menu=fileMenu)

実際に紹介したコードを、組み合わせて実行すると、以下の画像ように表示されます。

完成コード

1import tkinter as tk
2
3class Application(tk.Frame):
4    def __init__(self, master=None):
5        # Windowの初期設定を行う。
6        super().__init__(master)
7        # 1. Windowを作成する。
8        # Windowの画面サイズを設定する。
9        # geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/
10        self.master.geometry("300x200")
11
12        # 2. menubarを作成して、menubarをWindow内のmenubarとする。
13        # Menuを作成する。menuBarとする。
14        menuBar = tk.Menu()
15        # Window内のmenubarを、先ほど作成したmenuBarとする。
16        self.master.config(menu=menuBar)
17
18        # 3. サブメニューを作成する。
19        # サブメニューとは? : https://kotobank.jp/word/%E3%82%B5%E3%83%96%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC-3747#:~:text=%E9%9A%8E%E5%B1%A4%E7%9A%84%E3%81%AB%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C,%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E6%93%8D%E4%BD%9C%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%81%A7%E3%81%8D%E3%82%8B%E3%80%82
20        # Menuを作成する。fileMenuとする。
21        fileMenu = tk.Menu()
22        # label : サブメニュー名の設定
23        # command : サブメニューが選択された場合に、実行する関数を設定。self.onExitとする。
24        fileMenu.add_command(label="Exit", command=self.onExit)
25
26        # 4. 2.で作成したmenubarへ、Fileと名付けられたメインメニューを追加する。そしてFileと名付けられたメインメニュー内に、3で作成したサブメニューを追加する。
27        # メインメニューとは? : https://kotobank.jp/word/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC-9213
28        # label : メインメニュー名の設定
29        # menu : メインメニュー内に含む、サブメニュー
30        menuBar.add_cascade(label="File", menu=fileMenu)
31
32    # "Exit"と名付けられたサブメニューを選択した場合に、実行する関数
33    def onExit(self):
34        # Windowを閉じる。
35        self.quit()
36
37# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
38if __name__ == "__main__":
39    # Windowを生成する。
40    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
41    root = tk.Tk()
42    app = Application(master=root)
43    # Windowをループさせて、継続的にWindow表示させる。
44    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
45    app.mainloop()

menubar内のメニューを操作する関数

menubar内のメニューを操作する関数として、

  • add_command
  • add_cascade
  • add_radiobutton
  • add_checkbutton
  • add_separator
  • index
  • insert_checkbutton
  • insert_command
  • insert_cascade
  • insert_radiobutton
  • insert_separator

の11種類存在します。順に見ていきましょう。

add_command

add_command関数を利用すると、サブメニューを追加できます。

1.add_command(option1, option2, ...)

で定義されます。戻り値はありません。

例えば先ほどの「完成コード」で紹介したコード内のmenuBar.add_cascade(label="File", menu=fileMenu)の下へ以下のコードを追加すると、

1     menuBar.add_cascade(label="File", menu=fileMenu)
2+    fileMenu.add_command(label="A")

以下の画像のようにAのサブメニューが追加されます。

add_commandで使われるoptionの種類としては、以下のようになります。

option名説明文用例
label                       サブメニューを表す文字列を設定できます。fileMenu.add_command(label="A")
accelerator                       サブメニューを表す文字列の右側へ、ショートカットキーなどの文字列を追記しますfileMenu.add_command(label="A", accelerator="Shift+Ctrl+Y")
bitmap                       サブメニューを表す文字列をXBM形式の2値画像(白と黒のみで表現される画像)へ、変更できますfileMenu.add_command(bitmap='error')
command                       サブメニューが選択された場合に実行する関数を設定fileMenu.add_command(label="A", command=self.onExit)
state                       サブメニューの状態を設定できます。値としては、normal, active : サブメニューを選択できる, disabled : サブメニューを選択できないが存在します。fileMenu.add_command(label="A", state='disabled')
font                       サブメニューを表す文字列の形式や大きさを変更できます。fontに関しては、Tkinterで使われるフォントって?2種類のフォントの設定方法を丁寧に解説でまとめております。fileMenu.add_command(label="A", font=("", 20, "underline"))
image                       サブメニューを表す文字列を、画像へ変更できますfileMenu.add_command(image=tk.PhotoImage(file="/path_to/xxx.xxx"))

add_cascade

add_cascade関数を利用すると、menubarへメインメニューの追加を行います。

1.add_cascade(option1, option2, ...)

で定義されます。戻り値はありません。

例えば先ほどの「完成コード」で紹介したコード内のmenuBar.add_cascade(label="File", menu=fileMenu)の下へ以下のコードを追加すると、

1     menuBar.add_cascade(label="File", menu=fileMenu)
2+    menuBar.add_cascade(label="A", menu=fileMenu)

以下の画像のようにmenubarへ'A'のメインメニューが追加されます。

add_cascadeで使われるoptionの種類としては、以下のようになります。

option名説明文用例
label                       メインメニューを表す文字列を設定できます。menuBar.add_cascade(label="A", menu=fileMenu)
bitmap                       メインメニューを表す文字列をXBM形式の2値画像(白と黒のみで表現される画像)へ、変更できますmenuBar.add_cascade(menu=fileMenu, bitmap='error')
state                       サブメニューの状態を設定できます。値としては、normal, active : サブメニューを選択できる, disabled : サブメニューを選択できないが存在します。menuBar.add_cascade(label="A", menu=fileMenu, state=tk.DISABLED)
image                       メインメニューを表す文字列を、画像へ変更できますmenuBar.add_cascade(menu=fileMenu, image=tk.PhotoImage(file="/path_to/xxx.xxx"))
menu                      メインメニュー内に含む、サブメニューの設定を行いますmenuBar.add_cascade(label="A", menu=fileMenu)

add_radiobutton

add_radiobutton関数を利用すると、現在選択中のサブメニューへ✅が付与できる、サブメニューを追加できます。

1.add_radiobutton(option1, option2, ...)

で定義されます。戻り値はありません。

例えば先ほどの「完成コード」で紹介したコード内のmenuBar.add_cascade(label="File", menu=fileMenu)の下へ以下のコードを追加すると、

1     menuBar.add_cascade(label="File", menu=fileMenu)
2+    fileMenu.add_radiobutton(label="A")
3+    fileMenu.add_radiobutton(label="B")

以下の画像のようにA, Bのサブメニューが追加され、現在選択中のサブメニューへ✅が付けられます。

add_radiobuttonで使われるoptionの種類としては、以下のようになります。

option名説明文用例
label                       サブメニューを表す文字列を設定できます。fileMenu.add_radiobutton(label="A")
accelerator                       サブメニューを表す文字列の右側へ、ショートカットキーなどの文字列を追記しますfileMenu.add_radiobutton(label="A", accelerator="Shift+Ctrl+Y")
bitmap                       サブメニューを表す文字列をXBM形式の2値画像(白と黒のみで表現される画像)へ、変更できますfileMenu.add_radiobutton(bitmap='error')
command                       サブメニューが選択された場合に実行する関数を設定fileMenu.add_radiobutton(label="A", command=self.onExit)
state                       サブメニューの状態を設定できます。値としては、normal, active : サブメニューを選択できる, disabled : サブメニューを選択できないが存在します。fileMenu.add_radiobutton(label="A", state='disabled')
font                       サブメニューを表す文字列の形式や大きさを変更できます。fontに関しては、Tkinterで使われるフォントって?2種類のフォントの設定方法を丁寧に解説でまとめております。fileMenu.add_radiobutton(label="A", font=("", 20, "underline"))
image                       サブメニューを表す文字列を、画像へ変更できますfileMenu.add_radiobutton(image=tk.PhotoImage(file="/path_to/xxx.xxx"))
indicatoron                       現在選択中のサブメニューへ✅をつけるかどうか設定できます。値としては、True(✅をつける、デフォルト), False(✅をつけない)が設定できます。fileMenu.add_radiobutton(label="A", indicatoron=False)

add_checkbutton

add_checkbutton関数を利用すると、選択中のサブメニューへ✅が付与できる、サブメニューを追加できます。

1.add_checkbutton(option1, option2, ...)

で定義されます。戻り値はありません。

例えば先ほどの「完成コード」で紹介したコード内のmenuBar.add_cascade(label="File", menu=fileMenu)の下へ以下のコードを追加すると、

1     menuBar.add_cascade(label="File", menu=fileMenu)
2+    fileMenu.add_checkbutton(label="A")
3+    fileMenu.add_checkbutton(label="B")

以下の画像のようにA, Bのサブメニューが追加され、選択中のサブメニューへ✅が付けられます。

add_checkbuttonで使われるoptionの種類としては、以下のようになります。

option名説明文用例
label                       サブメニューを表す文字列を設定できます。fileMenu.add_checkbutton(label="A")
accelerator                       サブメニューを表す文字列の右側へ、ショートカットキーなどの文字列を追記しますfileMenu.add_checkbutton(label="A", accelerator="Shift+Ctrl+Y")
bitmap                       サブメニューを表す文字列をXBM形式の2値画像(白と黒のみで表現される画像)へ、変更できますfileMenu.add_checkbutton(bitmap='error')
command                       サブメニューが選択された場合に実行する関数を設定fileMenu.add_checkbutton(label="A", command=self.onExit)
state                       サブメニューの状態を設定できます。値としては、normal, active : サブメニューを選択できる, disabled : サブメニューを選択できないが存在します。fileMenu.add_checkbutton(label="A", state='disabled')
font                       サブメニューを表す文字列の形式や大きさを変更できます。fontに関しては、Tkinterで使われるフォントって?2種類のフォントの設定方法を丁寧に解説でまとめております。fileMenu.add_checkbutton(label="A", font=("", 20, "underline"))
image                       サブメニューを表す文字列を、画像へ変更できますfileMenu.add_checkbutton(image=tk.PhotoImage(file="/path_to/xxx.xxx"))
indicatoron                       選択中のサブメニューへ✅をつけるかどうか設定できます。値としては、True(✅をつける、デフォルト), False(✅をつけない)が設定できます。fileMenu.add_checkbutton(label="A", indicatoron=False)

add_separator

add_separator関数を利用すると、サブメニューの間へ、境界線を挿入できます。

1.add_separator()

で定義されます。戻り値はありません。

例えば先ほどの「完成コード」で紹介したコード内のmenuBar.add_cascade(label="File", menu=fileMenu)の下へ以下のコードを追加すると、

1     menuBar.add_cascade(label="File", menu=fileMenu)
2+    fileMenu.add_separator()
3+    fileMenu.add_command(label="A")

以下の画像のように'A'と'Exit'のサブメニューの間へ境界線を挿入します。

index

index関数を利用すると、menubarから見た、メインメニュー名のindex(位置)やメインメニューから見た、サブメニュー名のindex(位置)を取得できます。

1menubar.index(メインメニュー名) or メインメニュー.index(サブメニュー名)

で定義されます。戻り値としては、メインメニュー名のindex(位置) or サブメニュー名のindex(位置)が返されます。

メインメニューのindex(位置)は左(0)から順番に数えます。サブメニューのindex(位置)は上(0)から順番に数えます。

例えば先ほどの「完成コード」で紹介したコード内のmenuBar.add_cascade(label="File", menu=fileMenu)の下へ以下のコードを追加すると、

1     menuBar.add_cascade(label="File", menu=fileMenu)
2+    # Exitと名付けられたサブメニューのindex(位置)を取得する。
3+    print(fileMenu.index('Exit'))

以下の画像のようにサブメニュー'Exit'のindex(位置)を取得します。

insert_checkbutton

insert_checkbutton関数を利用すると、指定するindex(位置)へ、選択中のサブメニューへ✅が付与できる、サブメニューを追加できます。

1# 第一引数 : index(位置)
2.insert_checkbutton(index(位置), option1, option2, ...)

で定義されます。戻り値はありません。

例えば先ほどの「完成コード」で紹介したコード内のmenuBar.add_cascade(label="File", menu=fileMenu)の下へ以下のコードを追加すると、

1     menuBar.add_cascade(label="File", menu=fileMenu)
2+    fileMenu.add_checkbutton(label="A")
3+    fileMenu.insert_checkbutton(1, label="B")

以下の画像のように'A'の選択肢の上に'B'が挿入されて、選択中のサブメニューへ✅が付けられます。

insert_checkbuttonで使われるoptionの種類としては、以下のようになります。

option名説明文用例
label                       サブメニューを表す文字列を設定できます。fileMenu.insert_checkbutton(1, label="A")
accelerator                       サブメニューを表す文字列の右側へ、ショートカットキーなどの文字列を追記しますfileMenu.insert_checkbutton(1, label="A", accelerator="Shift+Ctrl+Y")
bitmap                       サブメニューを表す文字列をXBM形式の2値画像(白と黒のみで表現される画像)へ、変更できますfileMenu.insert_checkbutton(1, bitmap='error')
command                       サブメニューが選択された場合に実行する関数を設定fileMenu.insert_checkbutton(1, label="A", command=self.onExit)
state                       サブメニューの状態を設定できます。値としては、normal, active : サブメニューを選択できる, disabled : サブメニューを選択できないが存在します。fileMenu.insert_checkbutton(1, label="A", state='disabled')
font                       サブメニューを表す文字列の形式や大きさを変更できます。fontに関しては、Tkinterで使われるフォントって?2種類のフォントの設定方法を丁寧に解説でまとめております。fileMenu.insert_checkbutton(1, label="A", font=("", 20, "underline"))
image                       サブメニューを表す文字列を、画像へ変更できますfileMenu.insert_checkbutton(1, image=tk.PhotoImage(file="/path_to/xxx.xxx"))
indicatoron                       選択中のサブメニューへ✅をつけるかどうか設定できます。値としては、True(✅をつける、デフォルト), False(✅をつけない)が設定できます。fileMenu.insert_checkbutton(1, label="A", indicatoron=False)

insert_command

insert_command関数を利用すると、指定するindex(位置)へ、サブメニューを追加できます。

1# 第一引数 : index(位置)
2.insert_command(index(位置), option1, option2, ...)

で定義されます。戻り値はありません。

例えば先ほどの「完成コード」で紹介したコード内のmenuBar.add_cascade(label="File", menu=fileMenu)の下へ以下のコードを追加すると、

1     menuBar.add_cascade(label="File", menu=fileMenu)
2+    fileMenu.add_command(label="A")
3+    fileMenu.insert_command(1, label="B")

以下の画像のように'A'のサブメニューの上に'B'が挿入されます。

insert_commandで使われるoptionの種類としては、以下のようになります。

option名説明文用例
label                       サブメニューを表す文字列を設定できます。fileMenu.insert_command(1, label="A")
accelerator                       サブメニューを表す文字列の右側へ、ショートカットキーなどの文字列を追記しますfileMenu.insert_command(1, label="A", accelerator="Shift+Ctrl+Y")
bitmap                       サブメニューを表す文字列をXBM形式の2値画像(白と黒のみで表現される画像)へ、変更できますfileMenu.insert_command(1, bitmap='error')
command                       サブメニューが選択された場合に実行する関数を設定fileMenu.insert_command(1, label="A", command=self.onExit)
state                       サブメニューの状態を設定できます。値としては、normal, active : サブメニューを選択できる, disabled : サブメニューを選択できないが存在します。fileMenu.insert_command(1, label="A", state='disabled')
font                       サブメニューを表す文字列の形式や大きさを変更できます。fontに関しては、Tkinterで使われるフォントって?2種類のフォントの設定方法を丁寧に解説でまとめております。fileMenu.insert_command(1, label="A", font=("", 20, "underline"))
image                       サブメニューを表す文字列を、画像へ変更できますfileMenu.insert_command(1, image=tk.PhotoImage(file="/path_to/xxx.xxx"))

insert_cascade

insert_cascade関数を利用すると、menubarの指定するindex(位置)へメインメニューの追加を行います。

1# 第一引数 : index(位置)
2.insert_cascade(index(位置), option1, option2, ...)

で定義されます。戻り値はありません。

例えば先ほどの「完成コード」で紹介したコード内のmenuBar.add_cascade(label="File", menu=fileMenu)の下へ以下のコードを追加すると、

1     menuBar.add_cascade(label="File", menu=fileMenu)
2+    menuBar.add_cascade(label="Select", menu=fileMenu)
3+    menuBar.insert_cascade(1, label="A", menu=fileMenu)

以下の画像のように'File'と'Select'の間へ、'A'のメインメニューを追加します。

insert_cascadeで使われるoptionの種類としては、以下のようになります。

option名説明文用例
label                       メインメニューを表す文字列を設定できます。menuBar.insert_cascade(1, label="A", menu=fileMenu)
bitmap                       メインメニューを表す文字列をXBM形式の2値画像(白と黒のみで表現される画像)へ、変更できますmenuBar.insert_cascade(1, menu=fileMenu, bitmap='error')
state                       サブメニューの状態を設定できます。値としては、normal, active : サブメニューを選択できる, disabled : サブメニューを選択できないが存在します。menuBar.insert_cascade(1, label="A", menu=fileMenu, state=tk.DISABLED)
image                       メインメニューを表す文字列を、画像へ変更できますmenuBar.insert_cascade(1, menu=fileMenu, image=tk.PhotoImage(file="/path_to/xxx.xxx"))
menu                      メインメニュー内に含む、サブメニューの設定を行いますmenuBar.insert_cascade(1, label="A", menu=fileMenu)

insert_radiobutton

insert_radiobutton関数を利用すると、指定するindex(位置)へ、現在選択中のサブメニューへ✅が付与できる、サブメニューを追加できます。

1# 第一引数 : index(位置)
2.insert_radiobutton(index(位置), option1, option2, ...)

で定義されます。戻り値はありません。

例えば先ほどの「完成コード」で紹介したコード内のmenuBar.add_cascade(label="File", menu=fileMenu)の下へ以下のコードを追加すると、

1     menuBar.add_cascade(label="File", menu=fileMenu)
2+    fileMenu.add_radiobutton(label="A")
3+    fileMenu.insert_radiobutton(1, label="B")

以下の画像のように'A'のサブメニューの上に'B'が挿入されて、現在選択中のサブメニューへ✅が付けられます。

insert_radiobuttonで使われるoptionの種類としては、以下のようになります。

option名説明文用例
label                       サブメニューを表す文字列を設定できます。fileMenu.insert_radiobutton(1, label="A")
accelerator                       サブメニューを表す文字列の右側へ、ショートカットキーなどの文字列を追記しますfileMenu.insert_radiobutton(1, label="A", accelerator="Shift+Ctrl+Y")
bitmap                       サブメニューを表す文字列をXBM形式の2値画像(白と黒のみで表現される画像)へ、変更できますfileMenu.insert_radiobutton(1, bitmap='error')
command                       サブメニューが選択された場合に実行する関数を設定fileMenu.insert_radiobutton(1, label="A", command=self.onExit)
state                       サブメニューの状態を設定できます。値としては、normal, active : サブメニューを選択できる, disabled : サブメニューを選択できないが存在します。fileMenu.insert_radiobutton(1, label="A", state='disabled')
font                       サブメニューを表す文字列の形式や大きさを変更できます。fontに関しては、Tkinterで使われるフォントって?2種類のフォントの設定方法を丁寧に解説でまとめております。fileMenu.insert_radiobutton(1, label="A", font=("", 20, "underline"))
image                       サブメニューを表す文字列を、画像へ変更できますfileMenu.insert_radiobutton(1, image=tk.PhotoImage(file="/path_to/xxx.xxx"))
indicatoron                       現在選択中のサブメニューへ✅をつけるかどうか設定できます。値としては、True(✅をつける、デフォルト), False(✅をつけない)が設定できます。fileMenu.insert_radiobutton(1, label="A", indicatoron=False)

insert_separator

insert_separator関数を利用すると、指定するindex(位置)の上へ、境界線を挿入できます。

1# 第一引数 : index(位置)
2.insert_separator(index(位置))

で定義されます。戻り値はありません。

例えば先ほどの「完成コード」で紹介したコード内のmenuBar.add_cascade(label="File", menu=fileMenu)の下へ以下のコードを追加すると、

1     menuBar.add_cascade(label="File", menu=fileMenu)
2+    fileMenu.add_command(label="A")
3+    fileMenu.add_command(label="B")
4+    fileMenu.insert_separator(1)

以下の画像のように'Exit'と'A'の間へ境界線を挿入します。

まとめ

  • Tkinterで使われるmenubarとは、パソコン上に表示される選択肢を意味します。
  • 普段使いでは「パソコンの左上に表示される選択肢」を指します。
  • menubarが使われる理由として、操作したい項目や便利な機能が一元管理されているなどがあります。

参考文献