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

Tkinter调用mainloop后后续代码无法执行,返回值失效求助

解决Tkinter弹窗按钮点击后函数无法返回的问题

你当前代码的问题在于调用了window.mainloop()——Tkinter中如果主窗口(root)已经在运行主循环,嵌套调用子窗口的mainloop()会导致逻辑阻塞,即便窗口销毁,这个嵌套的主循环也无法正确退出,函数会卡在这一行无法执行return True。

替换成wait_window()即可解决问题,修正后的代码如下:

def function(self, root):
    def done():
        window.destroy()

    window = tk.Toplevel(root)
    window.geometry('500x100')
    window.title('Test')

    button = tk.Button(window, text='Press Me', command=done)
    button.grid(row=1, column=0, padx=3, pady=3)

    # 等待窗口销毁后再继续执行后续代码
    window.wait_window()

    return True

wait_window()方法会阻塞当前代码,直到目标弹窗被销毁,之后代码会继续执行到return True,这样就能在用户点击按钮后正确返回结果。

内容的提问来源于stack exchange,提问作者meep

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 08:07:36