2012-01-29 7 views
1

Я работаю под Windows 7, Python 2.6, Tkinter.Отменить выбор радиокнопки

Мне нужна помощь, чтобы отменить выбор переключателя в графическом интерфейсе каждый раз, когда пользователь его выбирает. У меня есть три переключателя в одной группе и кнопка сброса. Когда пользователь выбирает кнопку сброса, все переключатели должны быть отменены.

Это объявление кнопки радио:

self.Rb1 = Radiobutton (self.parent, text = 'Is this a required pre_action to the next step?', variable = self.var, value = 1)     
self.Rb1.place (x = 100, y= 400) 

и кнопка «Reset», что переплетены в команду OnReset:

def OnReset(self): 
    self.v1.set("Organ") 
    self.v2.set("Instrument") 
    self.v3.set("Surgical Action") 
    self.Rb1.deselect() 

Но метод .deselect() не стирает черную пулю из этого виджета! Он выбирает все переключатели (где у меня есть 3 переключателя в GUI). Пожалуйста, помогите мне понять, как я могу это исправить.

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

Заранее благодарен.

ответ

1

Радиобуты разработаны таким образом, чтобы каждый из набора всегда выбирался. Такое поведение ожидают пользователи. Radiobuttons по определению означает «точно один выбор из этого множества». В вашем конкретном случае кнопки означают «да» или «нет», поэтому нет третьего выбора. Булевы значения могут быть только одним из двух вариантов. Нет никакого вреда в продвижении и выборе одного для пользователя по умолчанию (если, возможно, вы не пишете программное обеспечение для ядерного реактора или медицинского устройства). Если вы отмените выделение на все, значение по умолчанию неверно в 100% случаев. Если вы выберете одно из двух значений, вы, по крайней мере, угадаете, что в половине случаев.

В целом, если вы действительно хотите, чтобы пользователь не мог выбрать ни один из вариантов, добавьте дополнительную опцию «unknown».

2

Я только что испытал и выяснил, что если вы установите значение variable на значение, которое не соответствует аргументу value любой из радиокнопки, кнопки не отображаются. Поэтому, если ваши три радиобарабана устанавливают self.var на 0, 1 и 2, вы можете сделать это так, чтобы не было выбрано ни одной опции с self.var.set(3). Так как 3 не соответствует ни одному из радиообъектов, ни одна из радиообъектов не будет выбрана.

Смежные вопросы