在其他操作之前弹出 Tkinter 消息框

Tkinter message box pops up before other actions

我正在努力弄清楚如何让消息框在正确的时刻弹出。它似乎总是在 window 更新之前弹出,以显示我想要的内容。这是一个例子;我希望按钮的文本在弹出消息框之前更新为 3,但它总是在我单击消息框上的确定后更新。

 from tkinter import *
 from tkinter import messagebox

 win = Tk()
 count = 0


 def click():
     global count
     count += 1
     btn.config(text=count)
     if count == 3:
         messagebox.showinfo('The count is 3')


 btn = Button(text='', command=click)
 btn.pack()

 win.mainloop()

运行 你的示例代码,我看到了你描述的相同行为。我可以通过在调用 messagebox.showinfo() 之前添加对 win.update() 的调用来解决这个问题。下面的完整代码虽然我将 count 从原始 int 更改为 IntVar 这对您的问题没有任何影响,我只是想看看它是否会:

from tkinter import *
from tkinter import messagebox

def click():
    count.set(value := count.get() + 1)

    if value == 3:
        win.update()

        messagebox.showinfo(f"The count is {value}")

win = Tk()

count = IntVar(win, value=0)

Button(win, command=click, textvariable=count).pack()

win.mainloop()