Как используя add_radiobutton() для каскада в Menu() из Tkinter установить галочку по умолчанию напротив одного из значений?

Рейтинг: 0Ответов: 1Опубликовано: 28.01.2023

Когда запускается программа с размерами по умолчанию, например 10х10, в подменю size галочка уже должна стоять напротив строки 10х10. Пробовал ответ отсюда, но тогда изначально галочки все равно нет, а если её поставить, то она уже не снимается. Нужно изначально указать один из вариантов, а дальше чтобы можно было выбирать любой вариант

from tkinter import Tk, Menu

root = Tk()
menubar = Menu(root)
size = Menu(menubar, tearoff=0)
size.add_radiobutton(label='5x5')
size.add_radiobutton(label='10x10')  # <- Нужно чтобы тут сразу стояла галочка при запуске.
                                     # А при выборе другого варианта она снималась, 
                                     # как и в данном примере
size.add_radiobutton(label='15x15')
menubar.add_cascade(label='Size', menu=size)
root.config(menu=menubar)
root.mainloop()

Ответы

▲ 0Принят

В англоязычной версии сайта подсказали как правильно использовать IntVar со значением по умолчанию, variable и value. В реальности я это всё в методе класса применял, поэтому чтобы заработало пришлось self.size_var использовать. В остальном способ идеально решил проблему

from tkinter import Tk, Menu, IntVar

root = Tk()
menubar = Menu(root)
size = Menu(tearoff=0)
size_var = IntVar(value=10)
size.add_radiobutton(label='5x5', variable=size_var)
size.add_radiobutton(label='10x10', variable=size_var, value=10)
size.add_radiobutton(label='15x15', variable=size_var)

menubar.add_cascade(label='Size', menu=size)
root.config(menu=menubar)
root.mainloop()