Я новичок в TKinter
. Мне нужно изменить текст button
и state
при его нажатии, затем выполнить некоторые действия и, наконец, снова изменить его текст и состояние.
Проблема в том, что изменения применяются только после завершения функции, пропуская первое изменение состояния и текста. Он никогда не изменяет текст Buttons
на «загрузка», и кнопка никогда не отключается.
Вот код проблемы, с которой я столкнулся:
#!/usr/bin/env python
import tkinter as tk
import time
class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack(fill=tk.BOTH, expand=1)
self.create_widgets()
def create_widgets(self):
self.master.title("CW POS")
cierre = tk.Button(
self.master,
command=self.re_imprimir_ultimo_cierre)
cierre["text"] = "foo"
cierre.pack(fill=tk.BOTH, expand=1)
self._cierre = cierre
salir = tk.Button(self.master, text="quit", command=self.salir)
salir.pack(fill=tk.BOTH, expand=1)
def salir(self):
exit()
def re_imprimir_ultimo_cierre(self):
self._cierre["text"] = "Loading..."
self._cierre["state"] = tk.DISABLED
# TODO: magic
time.sleep(2)
self._cierre["text"] = "foo"
self._cierre["state"] = tk.NORMAL
root = tk.Tk()
root.geometry("240x180")
root.resizable(False, False)
app = Application(root)
root.mainloop()
Как заставить кнопку показывать text="loading"
и state=DISABLED
, пока кнопка выполняет мои вычисления?