Когда вы создаете привязку с bind
, Tkinter автоматически добавляет аргумент, содержащий информацию о событии.Вы должны позаботиться о том, чтобы учесть этот дополнительный аргумент.(См. этот ответ )
Итак, если вы используете lambda
, вы можете просто добавить к нему параметр, например:
lambda event: self.show_radioname("radio1"))
from tkinter import *
class Gui:
def __init__(self, master):
self.master = master
self.var = StringVar()
self.var.set("Cat")
radio1 = Radiobutton(self.master, variable=self.var, text="radio1", value="Cat")
radio1.bind('<Double-1>', lambda event: self.show_radioname("radio1"))
radio1.pack()
radio2 = Radiobutton(self.master, variable=self.var, text="radio2", value="Dog")
radio2.bind('<Double-1>', lambda event: self.show_radioname("radio2"))
radio2.pack()
radio3 = Radiobutton(self.master, variable=self.var, text="radio3", value="Horse")
radio3.bind('<Double-1>', lambda event: self.show_radioname("radio3"))
radio3.pack()
submit_button = Button(self.master, text="print", command=self.show_var)
submit_button.pack()
self.master.mainloop()
def show_var(self):
print(self.var.get())
@staticmethod
def show_radioname(radio_name):
print(radio_name)
Gui(Tk())