2015-11-30 3 views
1

У меня есть checkbutton в моем окне tkinter, который в противном случае работает нормально, но он начинается как greyed и проверяется независимо от того, что я делаю. Я должен щелкнуть его один раз, чтобы удалить серый, затем снова снимите его. Я понятия не имею, почему это делается, кроме того, что это происходит только при использовании StringVar, в отличие от IntVar, например. Я просто хочу, чтобы он был неконтролирован, как и любой другой регулярный флажок. Вот мой код:Checkbutton проверяет себя независимо от состояния

self.symptom1Var = StringVar() 
self.symptomCheck1 = Checkbutton(self, text="Symptom", variable = self.symptom1Var) 
self.symptomCheck1.grid(row=2, column=0) 
+0

Какое значение _initial_ из 'symptom1Var'? – 9000

+0

Используйте функцию снятия выделения() или select(), чтобы изменить состояние по умолчанию, в зависимости от того, как вы хотите их запустить. –

ответ

0

Единственная проблема заключается в том, что вы не давая Checkbutton значения по умолчанию, так что она начинается в неопределенном состоянии.

Начальное значение StringVar является пустой строкой, по умолчанию «на» значение Checkbutton является 1 и по умолчанию «выключены» значение Checkbutton является 0. Так как вы не установили его либо 1, либо 0, он находится в неопределенном состоянии (ни проверен, ни снят).

Решение, чтобы убедиться, что он установлен либо зарегистрированный или незарегистрированный состояние, установив соответствующую переменную:

self.symptom1Var.set(1) 
Смежные вопросы