Как ограничить пользователя одной галочкой, проверено tkinter python - PullRequest
0 голосов
/ 22 мая 2019

Я создал графический интерфейс с несколькими кнопками проверки (количество кнопок выбора является случайным, это зависит от файла, который пользователь поместил в параметр ранее).

И поэтому я хотел бы знать, возможно ли ограничить пользователя одной проверенной кнопкой сразу.

Я знаю, что могу создавать радиокнопки, но дело в том, что у меня есть одна и та же переменная и то же значение для радиокнопок, и когда я использую радиокнопки, я могу проверить обе кнопки и не могу снять их. Вот мой код:

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

    self.diagramVars[self.listdiagram.dict_diagrams.get(element)] = diagramVar

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

У меня есть код, который работает с кнопками, но я не знаю, как ограничиться одним из них.

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

Редактировать: Это то, на что это похоже, значение в порядке, но оба проверены, и я не могу снять их, хотя радиокнопки были, когда я проверял один, другой не проверен.

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

Изображение 2: https://i.stack.imgur.com/iOnNV.png

1 Ответ

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

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

Radiobuttons работают немного иначе, чем Checkbuttons. С помощью переключателей вы можете создавать «группы», в которых можно выбрать только одну группу. Для этого у всех Radiobuttons должно быть то же самое IntVar(), что и у их поля variable=, а затем у каждого Radiobutton есть другое значение.

Вы можете сделать это в цикле, используя enumerate for loop, например:

diagramVars = {}
diagramVar = IntVar()

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

    self.diagramVars[self.listdiagram.dict_diagrams.get(element)] = diagramVar

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

Для этого вам не понадобится словарь, поскольку значением IntVar будет выбран RadioButton.

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

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