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
相关产品推荐
相关产品推荐

