Python - Desabilitando o botão ao clicar

Como posso impedir do usuário de apertar o botão varias vezes seguidas em uma janela em Python?

Ex: botão Iniciar e botão Pausar

O botão iniciar só seria habilitado novamente se clicar no botão pausar.

Olha não sou bom em programação pois estou iniciando mas oque eu faria seria uma verificação. Vamos á uma breve descrição de como funcionaria.

2 variaveis de valor booleano que define o valor do botão e se uma variavel tem valor True então a outra é False ou seja se o usuario apertou o botão play então a variavel recebe o valor True e a outra False se ele apertar denovo a a variavel for True ele não autoriza.

vou pegar 2 exemplos aqui pra você (Aviso: Foi gerado pelo gemini com base nas informações) Uma com GUI e outra no CLI.

GUI:

import tkinter as tk

def iniciar():
    global is_playing, is_paused
    if not is_playing:
        is_playing = True
        is_paused = False
        btn_iniciar.config(state=tk.DISABLED)
        btn_pausar.config(state=tk.NORMAL)
        # Aqui você colocaria o código para iniciar a ação

def pausar():
    global is_playing, is_paused
    if is_playing:
        is_playing = False
        is_paused = True
        btn_pausar.config(state=tk.DISABLED)
        btn_iniciar.config(state=tk.NORMAL)
        # Aqui você colocaria o código para pausar a ação

# Inicialização
is_playing = False
is_paused = True

# Criando a janela
janela = tk.Tk()
janela.title("Exemplo de Bloqueio de Botões")

# Criando os botões
btn_iniciar = tk.Button(janela, text="Iniciar", command=iniciar)
btn_iniciar.pack()
btn_pausar = tk.Button(janela, text="Pausar", command=pausar, state=tk.DISABLED)
btn_pausar.pack()

janela.mainloop()

CLI:

is_playing = False

while True:
    comando = input("Digite 'iniciar' ou 'pausar': ")

    if comando.lower() == "iniciar" and not is_playing:
        print("Iniciando...")
        is_playing = True
    elif comando.lower() == "pausar" and is_playing:
        print("Pausando...")
        is_playing = False
    else:
        print("Comando inválido ou ação não permitida.")

Esse código foi gerado por IA?

Neste modo simples ate funciona agora quando leva isso para outro programa tem que clicar varias vezes no botão pausar.

Exemplo:

Resultado:

Sim. Foi gerado pelo Gemini, eu tava na pressa que eu ia sair

ChatGPT também gerou algo igual ao Gemini.

Só não resolveu o problema do botão pausar.

Resposta:

É possível que o programa não esteja funcionando corretamente ao alternar entre iniciar, pausar e reiniciar devido à forma como os estados estão sendo manipulados. Se o botão de “Pausar” for clicado enquanto o cronômetro ainda está sendo executado, a variável rodar é alterada, mas o contador pode não parar corretamente.

label_tempo.after(1000, iniciar)

Depende do toolkit, em PySide:

def on_button_clicked():
    sender = app.sender().setDisabled(True)

app = QApplication([])
#... desenha o botão e afins