You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让代码在Tkinter窗口弹出后立即执行而非关闭后执行

解决Tkinter窗口弹出后立即执行计数的问题

问题出在window.mainloop()——这是Tkinter的事件循环,会一直占据线程直到窗口关闭,所以后面的while循环代码根本没机会运行,得等窗口关了才执行。另外直接用time.sleep()也不行,会把整个UI线程卡死,窗口会变成无响应状态。

正确的做法是用Tkinter自带的after()方法,它能在不阻塞事件循环的前提下,定时执行指定函数。修改后的代码如下:

from tkinter import Tk

def count_numbers(current_num):
    if current_num < 10:
        print(current_num)
        print("Hi")
        # 200毫秒后再次调用自身,实现循环计数
        window.after(200, count_numbers, current_num + 1)

I = 1
window = Tk()
window.title("Game")
window.configure(width=500, height=300, bg='blue')
window.geometry(f"+{I * 5}+0")

# 启动计数
count_numbers(I)

# 启动事件循环
window.mainloop()

这段代码的逻辑是:

  • 定义count_numbers函数,负责打印当前数字,然后通过after()安排200毫秒后继续调用自己,传入下一个数字
  • 窗口创建完成后,直接调用count_numbers(I)启动计数
  • 最后启动事件循环,此时事件循环会同时处理UI刷新和定时执行的计数函数,不会出现阻塞

内容的提问来源于stack exchange,提问作者Human De dios

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 22:45:32