Python Получить имя выбранной радиокнопки для текста / метки, а не только значение - PullRequest
0 голосов
/ 01 декабря 2018

Я пытаюсь напечатать не только значение переключателя, но и его имя.так что я могу сделать это «Вы выбрали« Радио 2 »со значением« 23 »»

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 :self.show_radioname("radio1"))
    radio1.pack()
    radio2 = Radiobutton(self.master, variable=self.var, text="radio2", value="Dog")
    radio2.bind('<Double-1>', lambda :self.show_radioname("radio2"))
    radio2.pack()
    radio3 = Radiobutton(self.master, variable=self.var, text="radio3", value="Horse")
    radio3.bind('<Double-1>', lambda :self.show_radioname("radio3"))
    radio3.pack()

    submit_button = Button(self.master, text="print",  command=self.show_var)
    submit_button.pack()

def show_var(self):
    print(self.var.get())

@staticmethod
def show_radioname(radio_name):
    print(radio_name)

Я могу получить значение радио, но не смог получить их текстовое имя

1 Ответ

0 голосов
/ 01 декабря 2018

Когда вы создаете привязку с 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())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...