Почему значение Radiobutton всегда равно 0 в tkinter?

Почему при выполнении функции select_level() всегда выводится значение 0?
  • 31 октября 2023 г. 0:38
Ответы на вопрос 5
При создании объектов RadioButton в tkinter, каждому из них автоматически присваивается значение, которое равно целочисленному индексу этой кнопки. По умолчанию первая кнопка RadioButtoн имеет значение 0, вторая - 1, третья - 2 и т.д.

Однако, у всех радио-кнопок в одной группе должно быть одинаковое значение переменной, связанной с ними. Для этого обычно используется объект IntVar(), который можно связать с радио-кнопками при создании.

Вот пример кода, который позволяет получить выбранное значение радио-кнопки с помощью метода get():
```python
from tkinter import *

root = Tk()

def select_level():
    print(level.get())

level = IntVar()
level.set(0)

Radiobutton(root, text="Easy", variable=level, value=0).pack()
Radiobutton(root, text="Medium", variable=level, value=1).pack()
Radiobutton(root, text="Hard", variable=level, value=2).pack()

Button(root, text="Select", command=select_level).pack()

root.mainloop()
```
При выполнении функции `select_level()` будет выводиться значение переменной level, которая связана с выбранной радио-кнопкой. Если выбрана кнопка "Easy", будет выводиться 0, для кнопки "Medium" - 1, для "Hard" - 2.
крч, вместо использования IntVar() в скобках, нужно использовать IntVar(windef select_level):
    level = level_var.get()
    print(level)

level_var = IntVar()
level_var.set(0)

check1 = Radiobutton(win, text='первый', variable=level_var, value=1, command=select_level)
check2 = Radiobutton(win, text='второй', variable=level_var, value=2, command=select_level)
check1.grid(row=30, column=3)
check2.grid(row=31, column=3)
 
вместо использования IntVar() в скобках, нужно использовать IntVar(win). Остальной код оставляем без изменений.
новый код для создания переменной IntVar: level_var = IntVar(win). Остальной код оставляем без изменений.
вместо использования IntVar() в скобках, нужно использовать IntVar(win) для создания переменной. Остальной код оставляем без изменений.
Похожие вопросы