Python 入門

ホーム > Tkinter による GUI プログラミング > メニューの利用方法

メニューの利用方法

tkinter で、基本的なメニューバーを利用する方法について説明します。

ここで作成するメニューは次の通りです。Exit メニューのコマンドには quit が割り当てられていますが、その他はコンソールに文字を表示するだけです。

tkinter でのメニュー tkinter でのメニュー

コードは次のようになります。

from tkinter import *
from tkinter import ttk

def foo():
    print('menu1!')

def bar():
    print('menu2!')
    
def baz():
    print('help!')

if __name__ == '__main__':
    
    root = Tk()

    menubar = Menu(root)
    # File Menu
    filemenu = Menu(menubar, tearoff=0)
    filemenu.add_command(label='Menu1', command=foo)
    filemenu.add_command(label='Menu2', command=bar)
    filemenu.add_separator()
    filemenu.add_command(label='Exit', command=quit)
    # Help
    helpmenu = Menu(menubar, tearoff=0)
    helpmenu.add_command(label='Help', command=baz)
    
    # Add
    menubar.add_cascade(label='File', menu=filemenu)
    menubar.add_cascade(label='Help', menu=helpmenu)
    
    root.config(menu=menubar)

    root.title('Menu1')
    root.minsize(300,150)
    root.rowconfigure(0, weight=1)
    root.columnconfigure(0, weight=1)
    root.grid()
    
    frame1 = ttk.Frame(root)
    frame1.rowconfigure(0, weight=1)
    frame1.columnconfigure(0,weight=1)
    frame1.grid(sticky=(N,E,S,W))
        
    root.mainloop()

Menu ウィジェットを作成する時には、tearoff オプションを False (または 0) に設定して作成します。これをしないと、 メニューに切り取り線が表示されて、切り取り可能なメニューになります。

tearoff を指定しない場合のデフォルトは次のようになります。

tkinter でのメニュー tkinter でのメニュー

ルートを親として Menu を作成し、それに対してそれぞれのメニュー階層を構築していきます。

上のコードでは menubar という変数が Menu ウィジェットのトップレベルメニューとなり、それを親として、 Menu ウィジェットを作成することで、そこにぶら下がるプルダウンメニューを作成できます。

それぞれのプルダウンの中にメニュー項目を作成するには、add_command メソッドを呼び、 ラベルとコマンドを指定します。

ホーム > Tkinter による GUI プログラミング > メニューの利用方法