#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)