TKinter中的禁用/启用按钮

时间:2018-12-02 13:05:59

标签: python 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()

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:1)

问题出在您的switch函数中。

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

单击按钮时,每次都会调用switch。对于切换行为,您需要告诉它切换回NORMAL状态。

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