Menuウィジェットに設定されたコマンドを実行しよう
前回はMenuウィジェットを使って、メニューを作成しました。
今回はMenuウィジェットに設定された関数を呼び出してみましょう。
Menuウィジェットから関数を呼び出す
Menuウィジェットから関数を呼び出すには、add_command()メソッドのcommandオプションを使います。
command=関数名
ただし、関数に引数を使う場合は、上記の方法ではうまく動作しません。
引数を使う場合は、lambda式を使います。
command=lambda: 関数名(引数)
Menuウィジェットから関数を呼び出すプログラム
Menuウィジェットから関数を呼び出すプログラムは、以下のようになります。
ラベルを用意して、関数に渡された値をラベルに表示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
### インポート import tkinter ### メニュー実行関数 def func(arg): value.set(arg) ### メイン画面作成 main = tkinter.Tk() ### ラベル表示変数 value = tkinter.StringVar() ### 画面サイズ設定 main.geometry("640x400") ### メニューバー作成 menubar = tkinter.Menu(master=main) ### ファイルメニュー作成 filemenu = tkinter.Menu(master=menubar, tearoff=0) filemenu.add_command(label="開く", command=lambda: func("開く")) filemenu.add_command(label="閉じる", command=lambda: func("閉じる")) filemenu.add_separator() filemenu.add_command(label="終了", command=main.quit) ### メニューバーに各メニューを設定 menubar.add_cascade(label="ファイル", menu=filemenu) ### メニューバー配置 main.config(menu=menubar) ### ラベル作成 label = tkinter.Label(master=main, textvariable=value, font=("HG丸ゴシックM-PRO",24), fg="blue") ### ラベル配置 label.pack(pady=180) ### イベントループ main.mainloop() |
プログラムを実行すると、以下のような画面が表示されます。
メニューから「開く」を選択すると画面の中央に「開く」が表示され、「閉じる」を選択すると「閉じる」が表示されます。