在其他操作之前弹出 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()
我正在努力弄清楚如何让消息框在正确的时刻弹出。它似乎总是在 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()