4

我想绘制一个小部件(在本例中为画布),然后在一段时间后将其移除。就像显示然后被删除的消息一样,只是为了让用户可以阅读它,但不需要单击“确定”或类似的东西来删除消息。

这是一个示例代码。

from tkinter import*

root = Tk()

canvas_1 = Canvas(root, width = 300, height = 300, bg = 'white')
canvas_1.grid(column = 0, row = 0)

canvas_2 = Canvas(canvas_1, width = 200, height = 200, bg = 'blue')
canvas_2.place(x = 50, y = 50)

canvas_1.after(1000, canvas_2.place_forget())

root.mainloop()

问题在于,after()无论何时在代码中调用它,tkinter 似乎都在其他所有操作之前运行该方法。结果是canvas_2永远不会出现。

我已经尝试过time.sleep(),但在这种情况下它似乎以相同的方式工作。

提前致谢。

4

1 回答 1

6

问题是您的after陈述实际上导致立即canvas_2被遗忘这是因为 () 告诉 Python运行place_forget函数(而不是在 1000 毫秒内运行它)。删除()的,你会很高兴。祝你好运。

替换这个:

canvas_1.after(1000, canvas_2.place_forget())

有了这个:

canvas_1.after(1000, canvas_2.place_forget)
于 2012-06-19T15:36:16.293 回答