在第一个例子中,IDLE使窗口没有.mainloop(),而在第二个IDLE中不需要done()就不会崩溃。这是为什么?
示例1
from tkinter import *
tk = Tk()
btn = Button(tk, text ="click me", command=hello)
btn.pack()
tk.mainloop()
示例2
from turtle import *
t = Pen()
t.forward(20)
done()
答案 0 :(得分:1)
在任何情况下都会创建窗口,在btn.pack()
之后添加暂停,即使没有.mainloop()
也可以看到它:
#!/usr/bin/env python3
from tkinter import Tk, Button
root = Tk()
Button(root, text ="click me", command=root.destroy).pack()
input('Press Enter to exit..') # normally, you should use `root.mainloop()` here
IDLE本身是使用tkinter
实现的,因此会调用.mainloop()
。
turtle
也是使用tkinter
实现的; turtle.done()
在内部调用.mainloop()
。