我是Tkinter的新手。我試圖摧毀Toplevel窗口,它完全被破壞,但之後沒有任何東西在運行。光標在python shell中一直閃爍,因爲它在運行無限循環時發生。摧毀Toplevel窗口不會讓應用程序走出主循環
這裏是我的代碼:
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()
窗口打開,所以我用Toplevel()
窗口。
在運行時,我得到一個打開並顯示消息的窗口。我點擊確定,一切都停止。 '大聲笑'不打印在外殼和功能永遠不會結束(因爲沒有達到return語句),因此'幫助'也不會打印
任何想法爲什麼會發生這種情況?
感謝,
'destroy'不會退出主循環,它只會將頂窗撕下。要退出循環,您需要在單擊該按鈕時使用'root1.quit()'以及'root1.destroy()'。 – Scironic 2015-03-31 08:09:15