Не удается получить значение из Radiobutton

#python #tkinter

#python #tkinter

Вопрос:

Когда я запускаю этот код:

 currentquestion = 0
currentcheckbox = 1
which_radio_var = StringVar(inside_test_root)

while currentquestion < len(questions):
                    print('currentcheckbox', currentcheckbox)
                    Radiobutton(inside_test_root, text=questions[currentquestion], value=currentcheckbox, variable=which_radio_var, indicatoron=0, wraplength=30).grid(row=currentquestion 1, column=0)
                    currentquestion  = 2
                    currentcheckbox  = 1
  

x = which_radio_var.get()

Я получаю радиокнопки, которые работают нормально, и все работает правильно, кроме того, когда я пытаюсь протестировать эти радиокнопки с помощью кода:

 Button(inside_test_root, text='oof', command=print(x)).grid(column = 77, row = 77)
  

Ничего не печатается. Это как-то связано с природой, которую я создал для radiobuttons? Мне нужен способ не знать количество кнопок, которые создаются заранее.
Любая помощь будет высоко оценена, спасибо

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

1. где вы устанавливаете x , что вы печатаете?

2. ах, извините, сейчас добавлю этот бит

3. command=print(x) означает печатать x прямо сейчас и использовать возвращаемое значение print() функции (которое равно None) в качестве команды для выполнения при нажатии кнопки. command=lambda: print(which_radio_var.get()) выполнил бы задание.

Ответ №1:

Ответ, как сказал jasonharper, я пропустил лямбда-выражение, что означает, что я вызывал функцию печати в первый раз и никогда больше

«command=print(x) означает напечатать x прямо сейчас и использовать возвращаемое значение функции print() (которое равно None) в качестве команды для выполнения при нажатии кнопки. command=lambda: print(which_radio_var.get()) выполнит эту работу «.

Обновленный код теперь выглядит так: (переменная ‘x’ стала ‘radio’, чтобы соответствовать остальной части моей программы)

                 if questiontype == 'Multiple Choice':
                    currentquestion = 0
                    currentcheckbox = 1
                    which_radio_var = StringVar(inside_test_root)
                    print (which_radio_var)
                    while currentquestion < len(questions):
                        print('currentcheckbox', currentcheckbox)
                        Radiobutton(inside_test_root, text=questions[currentquestion], value=currentcheckbox, variable=which_radio_var, indicatoron=0, wraplength=30).grid(row=currentquestion 1, column=0)
                        currentquestion  = 2
                        currentcheckbox  = 1
                        print(which_radio_var.get())
                    radio = which_radio_var.get()
                    Button(inside_test_root, text='oof', command=lambda: print(radio)).grid(column = 77, row = 77)