Мои радиокнопки остаются отмеченными после их выбора и не могут отменить их выбор. Python tkinter - PullRequest
0 голосов
/ 23 мая 2019

У меня GUI с таким количеством радиокнопок, сколько есть элементов в словаре.Когда я запускаю приложение:

шаг 1) все они не выбраны и значение равно 0 (все хорошо)

шаг 2) я выбираю одно его значение равно его положению всловарь (второй элемент = 2)

шаг 3) и когда я выбираю другие радиокнопки, оба остаются выбранными, и оба значения равны 2 и 3, если это второй и третий элемент

Снимок экрана: https://i.stack.imgur.com/yKJt8.png

Вот мой код:

for i, element in enumerate(self.listdiagram.dict_diagrams, start=1):
    diagramVar = IntVar(value=0)
    diagram = Radiobutton(self.window, text=element, variable=diagramVar, value=i)
    diagram.pack(side=BOTTOM, expand=1)

self.validate = Button(self.window, text="Validate", command=self.validateCallBack, width=15, height=3)
            self.validate.pack(side=BOTTOM, expand=1)

Я не понимаю, почему все радиокнопки остаются выбранными, когда я их проверяю.Цель радиокнопок не в том, чтобы можно было выбрать только одну?

Спасибо за помощь!

Редактируйте с помощью diagramVar вне цикла:

https://i.stack.imgur.com/PE4mm.png

1 Ответ

2 голосов
/ 23 мая 2019

Чтобы достичь этого, как и в моем последнем ответе, вы перемещаете diagramVar за пределы цикла, и теперь, чтобы получить, какой Radiobutton выбран, вы можете просто использовать diagramVar.get(), и число будет представлять, какое Radiobutton выбрано.

diagramVar = IntVar(value=0)

for i, element in enumerate(self.listdiagram.dict_diagrams, start=1):
    diagram = Radiobutton(self.window, text=element, variable=diagramVar, value=i)
    diagram.pack(side=BOTTOM, expand=1)

self.validate = Button(self.window, text="Validate", command=self.validateCallBack, width=15, height=3)
            self.validate.pack(side=BOTTOM, expand=1)

# Getting which radiobutton is selected
def getRadioSelect():
    return diagramVar.get() # the number returned will now represent which radiobutton is selected.

Например, если выбрано Radiobutton # 1, то diagramVar.get() вернет 0, если выбрано Radiobutton # 2, то diagramVar.get() вернет 1и т. д. Это потому, что группы Radiobuttons нуждаются в одинаковом IntVar()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...