Python

Как сделать одноразовую кнопку в pthon?

Я знаю как сделать кнопку в tkinter. Но она у меня получается многоразовой. А как сделать так что бы ты на неё нажал и она отключалась?
Для создания одноразовой кнопки в tkinter, вы можете использовать метод `configure` для изменения свойства кнопки после ее нажатия. Вот пример кода:

 python 
import tkinter as tk

def button_clicked():
print("Кнопка нажата")
button.configure(state=tk.DISABLED) # Отключаем кнопку

root = tk.Tk()

button = tk.Button(root, text="Нажми меня", command=button_clicked)
button.pack()

root.mainloop()
python
import tkinter as tk

def button_clicked():
print("Кнопка нажата")
button.configure(state=tk.DISABLED) # Отключаем кнопку

root = tk.Tk ()

button = tk.Button(root, text="Нажми меня", command=button_clicked)
button.pack()

root.mainloop()
Артём Полевщиков
Артём Полевщиков
1 347
Лучший ответ
Илья. Иииггг Работает. Благодарю
Можно сделать это дефолтным способом, работает для любой функции.

 import tkinter as tk  
pressed=0
def button_clicked():
global pressed
if not pressed:
print("Кнопка нажата")
pressed=1
root = tk.Tk()

button = tk.Button(root, text="Нажми меня", command=button_clicked)
button.pack()

root.mainloop()
При этом можно указать, что будет происходить с кнопкой, к примеру чтобы у нее поменялся цвет.

 import tkinter as tk  
pressed=0
def button_clicked():
global pressed
if not pressed:
print("Кнопка нажата")
pressed=1
button.config(text="Кнопка была нажата",bg="black")
root = tk.Tk()

button = tk.Button(root, text="Нажми меня", command=button_clicked)
button.pack()

root.mainloop()
Alexandr Petrov
Alexandr Petrov
13 649
Alexandr Petrov Или вот еще покруче способ.

 import tkinter as tk 

def button_clicked():
if button["text"] == "Нажми меня":
print("Кнопка нажата")
button["text"] = "Кнопка была нажата"
button["bg"] = "black"
button["fg"] = "white"

root = tk.Tk()

button = tk.Button(root, text="Нажми меня", command=button_clicked)
button.pack()

root.mainloop()
Alexandr Petrov Но лучше вообще вот так

 import tkinter as tk 

def button_clicked():
button["text"] = "Кнопка была нажата"
button["bg"] = "black"
button["state"] = "disabled"
button["disabledforeground"] = "white"
print("Кнопка нажата")
root = tk.Tk()
button = tk.Button(root, text="Нажми меня", command=button_clicked)
button.pack()

root.mainloop()
Для этого можно использовать метод `config` кнопки, чтобы задать ей функцию "нажатия" (command), которая будет вызываться только один раз. После этого, установите свойство `state` кнопки в "disabled", чтобы предотвратить возможность повторного нажатия. Примерный код будет выглядеть так:


from tkinter import *

root = Tk()

def only_once():
# код, который должен выполниться только один раз
btn.config(state='disabled') # кнопка становится неактивной

btn = Button(root, text='Нажми меня', command=only_once)
btn.pack()

root.mainloop()