【Python応用】Tkinterでアプリ作成-Menubarの使用例まとめ-

Python

ここでは、Tkinterでの「Menubar」の使用例をまとめています。

この記事の対象

  • Menubarとは?を知りたい方
  • Menubarの使用例を知りたい方
  • Submenusの使用例を知りたい方
スポンサーリンク
スポンサーリンク

Menubarとは?

Menubarはアプリに階層構造のメニューを実現したい場合に使用します。

サブメニューなども実現でき、アプリ作成では使用する頻度が多いものです。

基本的な型

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

ここでは、rootというMainウィンドウとしています。基本的にはMenuを作成して、config関数でMainウィンドウ内のmenubarとして指定しています。

引数は、トップウィンドウを指定しています。

主なoptionは以下の通りです。

Option内容
postcommand表示時に呼び出される関数
tearoffメニューの切り離し設定。0:無し。1:有り
tearoffcommand切り離し時の関数
title切り離しメニューのタイトル設定

Menu操作関数

主に使用する関数です。

項目内容
add_commandサブメニューの追加
add_cascadeメインメニューの追加
add_radiobutton現在選択中のサブメニューにチェックを付与、追加
add_checkbutton選択したらサブメニューにチェックを付与、追加
add_separatorサブメニューの間へ、境界線を挿入
indexメニュー名のindex(位置)を取得
insert_checbutton指定した位置へ選択中のサブメニューにチェックを付与、追加
insert_command指定した位置へサブメニューを追加
insert_cascade指定した位置へメインメニューを追加
insert_radiobutton指定した位置へ選択中のサブメニューにチェックを付与、追加
insert_separator指定した位置の上へ境界線を挿入

Menubarの作成

import tkinter as tk
import tkinter.ttk as ttk

#1---メインウィンドウの作成
root = tk.Tk()
root.title("Test")
root.geometry("600x300")

#2---menubarの作成
menubar = tk.Menu(root)
root.config(menu=menubar)

#3---menubarの設定
set_menu = tk.Menu(menubar, tearoff=0)
menubar.add_cascade(label='設定', menu=set_menu)

root.mainloop()

【結果】

以下、解説になります。

#1---メインウィンドウの作成
root = tk.Tk()
root.title("Test")
root.geometry("600x300")

1の部分でウィンドウを作成しています。

#2---menubarの作成
menubar = tk.Menu(root)
root.config(menu=menubar)

次に2の部分では、menubarを作成しています。ここで、menubarとしてconfig関数で作成しています。

#3---menubarの設定
set_menu = tk.Menu(menubar, tearoff=0)
menubar.add_cascade(label='設定', menu=set_menu)

3の部分では、作成したmenubarに親メニューを設置しています。親メニューは「add_cascade」で設定します。

add_cascadeで主に使用されるオプションは以下の通りです。

Option内容
labelメニューのラベル設定
bitmap メニューのラベルをXBM形式の画像に指定
stateサブメニューの設定。normal,active,disableから選択
imageメインメニューのラベルを画像に指定
menuメインメニューに含むサブメニューの設定を指定

Submenuの作成

import tkinter as tk
import tkinter.ttk as ttk

#1---メインウィンドウの作成
root = tk.Tk()
root.title("Test")
root.geometry("600x300")

#2---menubarの作成
menubar = tk.Menu(root)
root.config(menu=menubar)

#3---menubarの設定
set_menu = tk.Menu(menubar, tearoff=0)
menubar.add_cascade(label='設定', menu=set_menu)

#4---Submenuの設定
set_menu.add_command(label="SubMenu")

root.mainloop()

【結果】

以下、解説になります。

1~3はMenubarの作成で解説しているので、省略します。

#4---Submenuの設定
set_menu.add_command(label="SubMenu")

4の部分でサブメニューを追加しています。サブメニューは「add_command」で追加できます。

add_commandで主に使用されるオプションは以下の通りです。

Option内容
labelサブメニューのラベル設定
acceleratorlabelの右側にショートカットキーなどを設定
bitmap サブメニューのラベルをXBM形式の画像に指定
stateサブメニューの設定。normal,active,disableから選択
imageサブメニューのラベルを画像に指定
commandサブメニューを選択したときの実行する関数
font形式とサイズの指定

Radiobuttonのサブメニュー作成

import tkinter as tk
import tkinter.ttk as ttk

#1---メインウィンドウの作成
root = tk.Tk()
root.title("Test")
root.geometry("600x300")

#2---menubarの作成
menubar = tk.Menu(root)
root.config(menu=menubar)

#3---menubarの設定
set_menu = tk.Menu(menubar, tearoff=0)
menubar.add_cascade(label='設定', menu=set_menu)

#4---Submenuの設定
set_menu.add_command(label="SubMenu")

#5---Radiobuttonの追加
setting_menu.add_radiobutton(label="SubRadio")

root.mainloop()

【結果】

以下、解説になります。

1~4はSubmenuの作成で解説しているので、省略します。

#5---Radiobuttonの追加
setting_menu.add_radiobutton(label="SubRadio")

5の部分でRadiobuttonを追加しています。

add_radiobuttonで主に使用されるオプションは以下の通りです。

新しいウィンドウの作成

import tkinter as tk
import tkinter.ttk as ttk

#1---新しいウィンドウ作成関数
def create_dialog():
    dlg = tk.Toplevel()
    dlg.title("New Dialog")
    dlg.geometry("300x200")

#2---menubarの作成
menubar = tk.Menu(root)
root.config(menu=menubar)

#3---menubarの設定
set_menu = tk.Menu(menubar, tearoff=0)
menubar.add_cascade(label='設定', menu=set_menu)

#4---Submenuの設定
set_menu.add_command(label="SubMenu")
setting_menu.add_command(label="SubMenu",command = create_dialog)

root.mainloop()

【結果】

以下、解説になります。

#1---新しいウィンドウ作成関数
def create_dialog():
    dlg = tk.Toplevel()
    dlg.title("New Dialog")
    dlg.geometry("300x200")

1の部分では、コマンドの処理関数になります。Submenuをクリックしたら「Toplevel」メソッドを用いて新しいウィンドウを作成しています。

2~4の部分については、「Submenuの作成」をご参照下さい。

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