отмените выбор радиокнопки - PullRequest
1 голос
/ 29 января 2012

Я работаю под 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)   

и кнопки «Сброс», которая связана скоманда OnReset:

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

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

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

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 17 мая 2015

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

1 голос
/ 29 января 2012

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

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

...