【问题标题】:How to make tkinter wait before doing smth如何让 tkinter 在做某事之前等待
【发布时间】:2021-10-27 09:51:48
【问题描述】:

我正在尝试制作一个点击后的按钮:

  1. 将我的标签文本更改为“错误答案”
  2. 有 2 秒延迟,然后将其更改为“3 后关机...”
  3. 有 1 秒延迟,然后将其更改为“2 后关机...”
  4. 再延迟 1 秒,然后将其更改为“1 秒后关机...”

有人知道这是否可行吗?

def clickcancel():
    label.config(text = "Wrong answer!")
    sleep(2)
    label.config(text = "Shut down in 3...")
    sleep(1)
    label.config(text = "Shut down in 3...2...")
    sleep(1)
    label.config(text="Shut down in 3...2...1...")

【问题讨论】:

标签: python tkinter


【解决方案1】:

当您调用sleep 时,您的程序正是这样做的:它进入睡眠状态。这意味着 tkinter 无法刷新窗口以显示新文本。作为一般经验法则,您永远不应该在运行 GUI 的同一线程中调用 sleep。

tkinter 有一种方法可以安排代码在未来运行,而不是休眠。此方法称为after。它接受延迟的毫秒数、要调用的函数以及命令的可选参数。

例如,这是编写函数的一种方法:

def clickcancel():
    def setlabel(text):
        label.config(text=text)

    setlabel("Wrong answer!")
    label.after(1000, setlabel, "Shut down in 3...")
    label.after(2000, setlabel, "Shutdown in 3...2...")
    label.after(3000, setlabel, "Shutdown in 3...3...1...")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多