python tkinter Button 验证码按钮问题

按钮摁下之后不显示秒数,只在最后闪一下
问题代码:


import tkinter as tk
from time import sleep

i = 5
def setdisabled():
         global i

         if i != 0:
                  a = '(' + str(i) + 's)后重试'
#                 btn.config(textvariable = a,state = tk.DISABLED,bg="#ccc")
                  btn.config(text = a,state = tk.DISABLED,bg="#ccc")
                  i -= 1
                  sleep(1)
         root.after(100,setnormal)
 
def setnormal():
         btn.config(text = '获取验证码',state = tk.NORMAL,bg = "#090")
 
root = tk.Tk()
 
btn = tk.Button(root,text = '获取验证码',command = setdisabled,bg = "#090")
btn.pack()
 
root.mainloop()

python版本:3.8

我在您的另一个问题中给出了解答,具体代码:

 
import tkinter as tk
from time import sleep
 
i = 5
def setdisabled():
    global i
 
    while i != 0:
        a = '(' + str(i) + 's)后重试'
        #                 btn.config(textvariable = a,state = tk.DISABLED,bg="#ccc")
        btn.config(text = a,state = tk.DISABLED,bg="#ccc")
        root.update()
        i -= 1
        sleep(1)
    root.after(100,setnormal)
 
def setnormal():
         btn.config(text = '获取验证码',state = tk.NORMAL,bg = "#090")
 
root = tk.Tk()
 
btn = tk.Button(root,text = '获取验证码',command = setdisabled,bg = "#090")
btn.pack()
 
root.mainloop()

详细问题见您的另一个问答帖子。

你没设置多线程,没法显示及时显示变化