如何在tkinter中设置Button的限制,使其仅执行一次?

时间:2019-04-11 15:48:10

标签: python-3.x tkinter

我正在研究一个基于tkinter的简单GUI程序,该程序会打印“ DONE”(完成) 当单击按钮时,问题是当我一次又一次单击按钮时,它的打印内容“一次完成”一次又一次,因此我想将其限制为一次。.

from tkinter import *

def b1_action():
    Label_1 = Label(text = "DONE")
    Label_1.pack()

top = Tk()
top.geometry("500x500")

b1 = Button(text = "CLICK ME",command = b1_action)`enter code here`
b1.pack()
top.mainloop()

我希望“完成”仅打印一次,但是当我按下“点击我”按钮时,它会一次又一次地打印。

2 个答案:

答案 0 :(得分:0)

您要查找的代码行是

b1.configure(state=DISABLED)

鉴于您在b1声明中将命令声明为b1_action,该函数应如下所示。

def b1_action(): 
    Label_1 = Label(text = "DONE")
    Label_1.pack()
    b1.configure(state=DISABLED)

答案 1 :(得分:0)

您有两种方法可以做到这一点。

第一个选择是单击按钮后立即禁用按钮,

from tkinter import *


def b1_action():
    Label_1 = Label(text="DONE")
    Label_1.pack()
    b1.configure(state=DISABLED)


top = Tk()
top.geometry("500x500")

b1 = Button(text="CLICK ME", command=b1_action)
b1.pack()
top.mainloop()

第二个选项是您创建一个变量,以检查按钮是否被按下

from tkinter import *

BUTTON_PRESSED = False

def b1_action():
    global BUTTON_PRESSED

    if not BUTTON_PRESSED:
        Label_1 = Label(text="DONE")
        Label_1.pack()
        BUTTON_PRESSED = True


top = Tk()
top.geometry("500x500")

b1 = Button(text="CLICK ME", command=b1_action)
b1.pack()
top.mainloop()

但是我建议使用第一个选项,它更简单,更有效