Я хочу изменить значение TKinter.Checkbutton
при его нажатии.
Кнопка Checkbutton
, и я использую IntVar
для отслеживания / изменения ее значения.
В следующем примере у меня есть только одна кнопка, и я хочу, чтобы она меняла состояние обратно на 0 всякий раз, когда мы нажимаем на нее (в этом случае это может звучать глупо, но я пытаюсь решить другой более сложный случай, когда меняются другие кнопки значения).
Значение фактически обновляется, но внешний вид кнопки не изменяется, пока мышь не покинет то, что кажется областью кнопки.
Вот минимальный пример:
try :
import Tkinter as tk
except ImportError as e:
import tkinter as tk
root = tk.Tk()
val = tk.IntVar(root)
val.trace("w", lambda a, b, c: val.set(0))
button = tk.Checkbutton(root, text="button", variable=val)
button.pack()
root.mainloop()
Воспроизвести:
запустить приложение
нажмите на кнопку, но не отпускайте ее (кнопка изменит свой внешний вид на выбранный)
покинуть область кнопки (кнопка окончательно меняет свой внешний вид на невыбранный)
Почему она ждет, когда мышь покинет свою область?
Как заставить мгновенно изменить внешний вид кнопки?
Спасибо
РЕДАКТИРОВАТЬ:
Похоже, что использование ttk.Checkbutton
не имеет этой проблемы. Тем не менее, это не объясняет, почему оригинальная кнопка ведет себя так, как она работает, и как вести себя с кнопками tk
.