Как установить лимит Button в tkinter, чтобы он выполнялся только один раз? - PullRequest
0 голосов
/ 11 апреля 2019

Я работаю над простой программой с графическим интерфейсом, основанной на tkinter, которая печатает "DONE", когда нажимается кнопка, но проблема в том, что когда я нажимаю на кнопку снова и снова, она снова и снова печатает "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 голосов
/ 11 апреля 2019

У вас есть два способа сделать это.

Первый вариант, который у вас есть, - отключить кнопку сразу после ее нажатия,

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()

Но я советую использовать первый вариант, он проще и эффективнее

0 голосов
/ 11 апреля 2019

Строка кода, которую вы ищете, это

b1.configure(state=DISABLED)

Учитывая, что вы указали свою команду как b1_action в объявлении b1, эта функция должна выглядеть примерно так:

def b1_action(): 
    Label_1 = Label(text = "DONE")
    Label_1.pack()
    b1.configure(state=DISABLED)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...