调用tkinter root.quit()会导致内核和窗口停止响应


import Tkinter as Tk
root = Tk.Tk()
def generate():
    root.quit()
label1 = Tk.Label(root, text="Map Width:")
label2 = Tk.Label(root, text="Map Height:")
label3 = Tk.Label(root, text="Lake Size:")
e1 = Tk.Entry(root)
e2 = Tk.Entry(root)
e3 = Tk.Entry(root)
button1 = Tk.Button(root, text="Generate", command=generate)
label1.grid(row=0, column=0)
label2.grid(row=1, column=0)
label3.grid(row=2, column=0)
e1.grid(row=0, column=1)
e2.grid(row=1, column=1)
e3.grid(row=2, column=1)
button1.grid(row=3, column=1)
root.mainloop()

这是一个较大项目的片段,为简单起见,删除了generate()的其余功能。使用上述代码,成功创建了一个窗口,其中包含三个标签,三个相应的入口字段和一个按钮。生成按钮旨在调用函数 generate(),然后根据其他代码创建映射对象,然后调用 root.quit()

但是,按下按钮时,窗口停止响应,Python内核反复打印消息:

It seems the kernel died unexpectedly. Use 'Restart kernel' to continue using this console.

我敢肯定这是一个小错误,但是如果有人可以向我展示我出错的地方,我会非常感激。

使用root.destroy()代替root.quit()

root.quit()从我的理解中,当您要运行的主循环后有其他代码时,最好使用它。

"""Quit the Tcl interpreter. All widgets will be destroyed."""

root.destroy()将销毁主循环内部的所有内容。并应用于退出程序。

这是tkinter库中该方法的报价。

"""Destroy this and all descendants widgets. This will
        end the application of this Tcl interpreter."""

相关内容

  • 没有找到相关文章

最新更新