销毁 Toplevel window 不会让应用程序跳出主循环
Destroying Toplevel window doesn't let the application come out of the main loop
我是 Tkinter 的新手。我正在尝试摧毁 Toplevel window,它被完美摧毁,但在那之后什么都没有 运行。光标一直在 python shell 中闪烁,因为它发生在 运行 无限循环中。
这是我的代码:
def error_msg(msg) :
root1 = Tk.Toplevel()
root1.attributes("-topmost", True)
root1.title("Error")
w1 = 230
h1 = 100
ws1 = root1.winfo_screenwidth()
hs1 = root1.winfo_screenheight()
x1 = (ws1/2) - (w1/2)
y1 = (hs1/2) - (h1/2)
root1.geometry('%dx%d+%d+%d' % (w1, h1, x1, y1))
can1 = Tk.Canvas(root1,width = 230,height=100)
can1.pack()
im1 = Image.open("img.png")
tkimage1 = ImageTk.PhotoImage(im1)
Canvas_Image1 = can1.create_image(0,0, image=tkimage, anchor="nw")
canvas_id1 = can1.create_text(15, 10, anchor="nw")
can1.itemconfig(canvas_id1, text=msg)
Tk.Button(root1, text='OK', command =root1.destroy).place(x=110,y=70)
root1.mainloop()
root1.quit()
print 'lol'
return None
error_msg("This is an error")
print 'Help'
在此之前,我已经打开了 Tk()
window,所以我正在使用 Toplevel()
window.
在 运行 我收到一个 window 打开并显示消息。我点击确定,一切都停止了。 'lol' 不会在 shell 中打印并且函数永远不会结束(因为未达到 return 语句),因此 'Help' 也不会打印
知道为什么会这样吗??
谢谢,
对于对话框 window,您应该使用 wait_window()
,而不是创建新的 mainloop
。这会等到 Toplevel window 关闭,然后继续执行以下行。
所以你应该更换
root1.mainloop()
root1.quit()
和
root1.wait_window()
有关创建对话框的更多提示 window 请参阅 this article on effbot.org。
我是 Tkinter 的新手。我正在尝试摧毁 Toplevel window,它被完美摧毁,但在那之后什么都没有 运行。光标一直在 python shell 中闪烁,因为它发生在 运行 无限循环中。
这是我的代码:
def error_msg(msg) :
root1 = Tk.Toplevel()
root1.attributes("-topmost", True)
root1.title("Error")
w1 = 230
h1 = 100
ws1 = root1.winfo_screenwidth()
hs1 = root1.winfo_screenheight()
x1 = (ws1/2) - (w1/2)
y1 = (hs1/2) - (h1/2)
root1.geometry('%dx%d+%d+%d' % (w1, h1, x1, y1))
can1 = Tk.Canvas(root1,width = 230,height=100)
can1.pack()
im1 = Image.open("img.png")
tkimage1 = ImageTk.PhotoImage(im1)
Canvas_Image1 = can1.create_image(0,0, image=tkimage, anchor="nw")
canvas_id1 = can1.create_text(15, 10, anchor="nw")
can1.itemconfig(canvas_id1, text=msg)
Tk.Button(root1, text='OK', command =root1.destroy).place(x=110,y=70)
root1.mainloop()
root1.quit()
print 'lol'
return None
error_msg("This is an error")
print 'Help'
在此之前,我已经打开了 Tk()
window,所以我正在使用 Toplevel()
window.
在 运行 我收到一个 window 打开并显示消息。我点击确定,一切都停止了。 'lol' 不会在 shell 中打印并且函数永远不会结束(因为未达到 return 语句),因此 'Help' 也不会打印
知道为什么会这样吗??
谢谢,
对于对话框 window,您应该使用 wait_window()
,而不是创建新的 mainloop
。这会等到 Toplevel window 关闭,然后继续执行以下行。
所以你应该更换
root1.mainloop()
root1.quit()
和
root1.wait_window()
有关创建对话框的更多提示 window 请参阅 this article on effbot.org。