我想绘制一个小部件(在此示例中为画布),然后在一段时间后将其删除。就像显示然后被删除的消息一样,只是为了让用户可以阅读它,但是没有必要单击“确定”或类似的东西来删除消息。
这是一个示例代码。
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()
问题在于,无论何时在代码中调用,tkinter似乎都会在其他所有方法之前运行after()
方法。结果是canvas_2
永远不会出现。
我尝试了time.sleep()
但在这种情况下似乎也以同样的方式运作。
提前致谢。
答案 0 :(得分:5)
问题是你的after
语句实际上导致canvas_2
被立即忘记。这是因为()告诉Python要运行 place_forget
函数(而不是在1000毫秒内运行)。删除(),你会很高兴。祝你好运。
替换它:
canvas_1.after(1000, canvas_2.place_forget())
用这个:
canvas_1.after(1000, canvas_2.place_forget)