python - 如何强制关闭顶级窗口的消息框

标签 python tkinter toplevel

image for that 我这里有几行代码,这是登录系统,工作正常,但是当我提供错误的密码时,我可以多次单击 Toplevel 按钮,而不关闭 messagebox。如何我可以这样做吗,以便必须先关闭messagebox,然后才能再次尝试。

from tkinter import *
from tkinter import messagebox


def top():
    if entry1.get() == "333":
       log.destroy()
       root.deiconify()
    else:
       messagebox.showerror("error", "try again")


root = Tk()
root.geometry("300x300")

log = Toplevel(root)
log.geometry("200x200")


label1 = Label(log, text="password")
entry1 = Entry(log)
button1 = Button(log, text="login", command=top)

label1.pack()
entry1.pack()
button1.pack(side="bottom")

lab = Label(root, text="welcome bro").pack()


root.withdraw()
root.mainloop()

最佳答案

您需要使日志窗口成为对话框的父窗口:

messagebox.showerror("error", "try again", parent=log)

默认情况下,它将使用根窗口(Tk 实例)作为父窗口,在本例中这不是您想要的。

关于python - 如何强制关闭顶级窗口的消息框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47652001/

相关文章:

python - 使用 Python 通过 Outlook 发送高重要性电子邮件

python - 启动外部 cmd.exe 文件并使用子进程 python 将参数传递给它

ocaml - 我在使用 ocaml 多态函数时遇到了一些麻烦

kotlin - 如何在内部定义带有sharedPreferences的顶级功能?

python - 使用 pytest 模拟 psycopg2 的正确方法是什么?

python - Django测试客户端登录后返回匿名用户

python - TKinter:如何创建直方图?

Python tkinter - 成功从顶层继承

python - 如何将 Tkinter 按钮用于两种状态?

python - 更多关于 tkinter optionmenu 第一个选项消失