python3 + tkinter:单击时执行方法时禁用按钮

时间:2017-10-07 15:36:17

标签: python tkinter

我想用tkinter编写一个简单的计时器。 我有一个开始按钮:

start_button = tkinter.Button(root, bg="white", text="Start", command=start_button_clicked)

以及在点击

上运行的命令
def start_button_clicked():
    start_button.config(text='Started', state='disabled')
    tm = timer.Timer()
    tm.count_time(1)

我期待它

  1. 更改按钮文字和状态
  2. 创建新计时器并运行倒计时
  3. 但事实上,只有在计时器用完后才会更改按钮参数。 为什么会发生这种情况?如何在点击后立即更改按钮?

2 个答案:

答案 0 :(得分:0)

您正在错误地使用Timer()函数。您可以尝试使用“时间”库创建计时器或使用time.delay(10)。但是,如果您想使用Timer(),则可以执行以下操作:

from threading import Timer
from tkinter import *


def disable_button():
    start_button.config(text='Started', state='disabled')

def start_button_clicked():
    tm = Timer(3, disable_button)
    tm.start()

root = Tk()
root.minsize(100, 100)

start_button = tkinter.Button(root, bg="white", text="Start", command=start_button_clicked)
start_button.pack()

root.mainloop()

答案 1 :(得分:0)

我无法识别timer.Timer(),但是如果你想在配置中添加root.update()后立即更改按钮的状态

def start_button_clicked():
    start_button.config(text='Started', state='disabled')
    root.update()
    tm = timer.Timer()
    tm.count_time(1)