もう間違えない!?Tkinterで使われるmenubarの作成手順を徹底解説!?
今回はTkinterで使われるmenubarの作成手順を徹底解説いたします。menubarの使い方がわからない、コードを踏まえて学習したい方へおすすめです。是非最後までご一読ください。
執筆者 - おすすめの記事3選
そもそもTkinterで使われるmenubarとは?
Tkinterで使われるmenubarとは、パソコン上に表示される選択肢を意味します。普段使いでは「パソコンの左上に表示される選択肢」と考えると良いでしょう。
別名でmenuと呼ばれたりします。
具体的なmenubarを画像を用いて説明すると、以下の緑色枠部分を表します。
menubarが利用される理由
menubarが利用される理由として、
- パソコン操作に困った場合の、お助け情報がまとまっている
- 便利な機能が一元管理されている
- 普段使いする操作項目が並んでいて、探す手間を省ける
などがあります。
確かに普段使いする操作項目が並んでいると、覚えることが減って手間が省けますね。
menubarの作り方【4ステップ】
menubarを作るためには、
- Windowを作成する
- menubarを作成して、menubarをWindow内のmenubarとする
- サブメニューを作成する
- 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が使われる理由として、操作したい項目や便利な機能が一元管理されているなどがあります。