概要
Tkinterで作成したmenuのradiobuttonが選択されたとき、選択されたほうのvalueを取得する方法を記載します。
画像でいえば、1に設定されたvalueを取得したいということになります。
動機
radiobuttonと紐付ける関数は同じものにして、引数で処理を変更したい。
引数としてはradiobuttonのvalueを使いたい。
方法
add_radiobuttonメソッドのvariable引数に、StringVarを渡します。
文字列ではなく数値型が欲しい場合はIntVarを渡す。
サンプルコード
example.py
import tkinter as tk
class Menu(tk.Menu):
def __init__(self, master=None):
tk.Menu.__init__(self, master)
master.bind("<Button-3>", self.create_menu)
self.string_var: tk.StringVar = tk.StringVar()
self.string_var.set("")
def create_menu(self, event=None):
self.post(event.x_root, event.y_root)
def set_value_for_menu(self):
self.add_radiobutton(label="1", value="hogehoge-1", variable=self.string_var, command=self.print_select_menu_item)
self.add_radiobutton(label="2", value="hogehoge-2", variable=self.string_var, command=self.print_select_menu_item)
def print_select_menu_item(self, event=None):
print(self.string_var.get())
if __name__ == "__main__":
root: tk.Tk = tk.Tk()
menu: Menu = Menu(root)
menu.set_value_for_menu()
root.mainloop()
出力結果
1を押した場合:
hogehoge-1
2を押した場合
hogehoge-2