为什么Wing中需要.mainloop()和done(),而不是IDLE?

时间:2015-02-13 10:53:42

标签: python python-3.x tkinter

在第一个例子中,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()

1 个答案:

答案 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()