gpt4 book ai didi

python - 销毁顶级窗口不会让应用程序退出主循环

转载 作者:行者123 更新时间:2023-12-01 04:46:09 25 4
gpt4 key购买 nike

我是 Tkinter 新手。我试图摧毁顶层窗口,它被完美摧毁,但此后没有任何运行。在运行无限循环时,光标在 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() 窗口,因此我使用的是 Toplevel() 窗口。

运行时,我收到一个打开并显示消息的窗口。我点击“确定”,一切就停止了。 'lol' 不会在 shell 中打印,并且函数永远不会结束(因为未到达 return 语句),因此也不会打印 'Help'

知道为什么会发生这种情况吗?

谢谢

最佳答案

对于对话框窗口,您应该使用 wait_window(),而不是创建新的 mainloop。这会等到顶级窗口关闭,然后继续执行以下几行。

所以你应该更换

root1.mainloop()
root1.quit()

root1.wait_window()

有关创建对话框窗口的更多提示,请参阅 this article on effbot.org .

关于python - 销毁顶级窗口不会让应用程序退出主循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29363363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com