当前位置:   article > 正文

python tkinter button控件状态修改_tkinter button不可点击

tkinter button不可点击

想实现效果:
点下按钮后,调用函数,不可再点击按钮,函数调用结束,按钮才可再次点击。

尝试:

import tkinter
import time


def bc():
    b1['state'] = 'disable'
    for i in range(4, 0, -1):
        tkinter.Label(root, text=f'倒计时{i}秒   ').place(x=50, y=120)
        time.sleep(1)
    b1['state'] = 'normal'


root = tkinter.Tk()
root.geometry('200x200')
b1 = tkinter.Button(root, text='按钮', bd=3, command=bc)
b1.place(x=50, y=50)
root.mainloop()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

结果:

  • 按钮状态一直为normal状态,多次点击按钮 会叠加调用。
  • 函数实现的倒计时功能展示出错。
  • 耗时过久时,界面卡死。

修改:

import threading
import tkinter
import time


def thread_it(fc):
    t = threading.Thread(target=fc)
    t.setDaemon(True)
    t.start()


def bc():
    b1['state'] = 'disable'
    for i in range(10, 0, -1):
        tkinter.Label(root, text=f'倒计时{i}秒   ').place(x=50, y=120)
        time.sleep(1)
    b1['state'] = 'normal'


root = tkinter.Tk()
root.geometry('200x200')
b1 = tkinter.Button(root, text='按钮', bd=3, command=lambda: thread_it(bc))
b1.place(x=50, y=50)
root.mainloop()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/124969
推荐阅读
相关标签
  

闽ICP备14008679号