Кнопка отключения/включения в TKinter

Я пытаюсь сделать кнопку похожей на переключатель, поэтому, если я нажму кнопку отключения, она отключит «Кнопку» (это работает). И если я нажму еще раз, он снова включит его.

Я пробовал такие вещи, как if, else, но не заработал. Вот пример:

from tkinter import *
fenster = Tk()
fenster.title("Window")

def switch():
    b1["state"] = DISABLED

#--Buttons
b1=Button(fenster, text="Button")
b1.config(height = 5, width = 7)
b1.grid(row=0, column=0)    

b2 = Button(text="disable", command=switch)
b2.grid(row=0,column=1)

fenster.mainloop()

person rattionline    schedule 02.12.2018    source источник


Ответы (2)


Tkinter Button имеет три состояния: active, normal, disabled.

Вы устанавливаете для параметра state значение disabled, чтобы кнопка стала серой и перестала отвечать на запросы. Он имеет значение active, когда на него наведен указатель мыши, а значение по умолчанию — normal.

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

from tkinter import *

fenster = Tk()
fenster.title("Window")

def switch():
    if b1["state"] == "normal":
        b1["state"] = "disabled"
        b2["text"] = "enable"
    else:
        b1["state"] = "normal"
        b2["text"] = "disable"

#--Buttons
b1 = Button(fenster, text="Button", height=5, width=7)
b1.grid(row=0, column=0)    

b2 = Button(text="disable", command=switch)
b2.grid(row=0, column=1)

fenster.mainloop()
person Miraj50    schedule 02.12.2018

Проблема в вашей функции switch.

def switch():
    b1["state"] = DISABLED

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

def switch():
    if b1["state"] == NORMAL:
        b1["state"] = DISABLED
    else:
        b1["state"] = NORMAL
person Will Dereham    schedule 02.12.2018