Как использовать значение в radiobutton в основном коде?

#python #tkinter

Вопрос:

Я в основном пытаюсь вывести переменную x за пределы функции или создать переменную, которая изменяется в зависимости от радиокнопок.

 x = ''

def test():
global x
x = y.get()

y = tk.StringVar()
tk.Radiobutton(root, text = "Pizza", variable = y, value = 'pz',padx=10, pady=10,command=test)
tk.Radiobutton(root, text = "Burger", variable = y, value = 'bk',padx=10, pady=10,command=test)

print (x)
 

Спасибо за любую помощь, я новичок в концепциях python и tkinter.

Комментарии:

1. Почему вы хотите, чтобы это было вне функции?

2. Я хотел бы, чтобы это было вне функции, чтобы использовать значение и хранить его в другой переменной, чтобы иметь возможность использовать его как оператор IF/ELSE в более поздней части кода, в которой используются 3 разных набора переключателей.

3. С какой проблемой вы столкнулись ? Будьте добры, объясните

4. В принципе, я хотел бы сделать так, чтобы при нажатии на кнопку radiobutton значение сохранялось как переменная, которую я могу использовать в более поздней части кода.

Ответ №1:

Если вы обернете его в a class и добавите переменную в self , то любой член класса сможет получить к нему доступ. В случае, если вам нужно передать дополнительные переменные из локальной области, вам нужно будет использовать a lambda .

 import tkinter as tk

class App(tk.Tk):

    def print_value(self):
        print(self.radio_svar.get())

    def __init__(self):
        tk.Tk.__init__(self)

        self.radio_svar = tk.StringVar(value='pz')

        self.radio_a = tk.Radiobutton(
            self, text="Pizza",
            variable=self.radio_svar, value='pz',
            padx=10, pady=10, command=self.print_value
        )
        self.radio_a.pack()

        self.radio_b = tk.Radiobutton(
            self, text="Burger",
            variable=self.radio_svar, value='bk',
            padx=10, pady=10, command=self.print_value
        )
        self.radio_b.pack()


if __name__ == '__main__':
    app = App()
    app.mainloop()