在Tkinter中打开新窗口冻结程序(python 3.6)

时间:2018-02-07 15:58:35

标签: python user-interface tkinter

我有这样的事情:

first.py

from tkinter import *

def new_window(event):
    root.destroy()
    import second

root = Tk()
b = Button(root, text='New window')
b.pack()
b.bind('<Button-1>', new_window)
root.mainloop()

second.py

from tkinter import *
root = Tk()
root.mainloop()

但是当我打开第二个窗口时,第一个窗口被摧毁(我希望如此),但第二个窗口被冻结(显示,但顶部没有关闭按钮,我只看到发射 - 图标)。为什么会这样?我不要杀掉第一个循环吗?

1 个答案:

答案 0 :(得分:2)

问题可能是因为import second永远不会返回,因为它做的最后一件事就是调用root.mainloop()。由于它永远不会返回,因此第一个窗口中的回调永远不会完成。由于它永远不会完成,它无法处理任何其他事件。