代码之家  ›  专栏  ›  技术社区  ›  DesperateFolk

update()的主要用途是什么?为什么没有update()我的代码就不能工作?

  •  0
  • DesperateFolk  · 技术社区  · 8 年前

    代码在1920x1080画布上缓慢生成随机选择的数字1和0的列

    def matrix():
        c.configure(bg="black")
        numbers=[0,1]
        for i in range(100):
            for j in range(50):
                c.create_text(i*20,j*20,text=random.choice(numbers),fill="green")
                c.after(50)
                c.update() # <code>\<</code>------
    matrix()
    

    它的主要目的是什么 update() 更新() ?

    我环顾了一下四周,但不能真正理解。你可以说我很愚蠢。

    1 回复  |  直到 8 年前
        1
  •  3
  •   Bryan Oakley    8 年前

    您的代码 不打电话工作 update . 只是你看不到它在工作,因为你不让tkinter刷新窗口。

    为了使tkinter(或任何GUI工具包)正常工作,它必须能够响应稳定的事件流。单击按钮、键入、调整窗口大小或绘制画布等都会导致事件添加到队列中。

    通常,这些事件由事件循环处理,这是什么 mainloop 是这是一个简单地等待事件到达,然后处理它们的循环。

    因为tkinter是单线程的,所以它一次只能做一件事。因此,只要您的代码正在做某事(例如:您的 for

    当你打电话的时候 使现代化 ,您正在请求tkinter处理卡在事件队列中的所有挂起事件。请注意,此过程 全部的 队列中的事件,因此如果单击按钮,也会处理该单击。这可能会导致对 使现代化 如果每次您调用时,它都会处理一个事件,导致再次调用。

    由于您想要的不是处理所有事件,而是只处理与刷新显示相关的事件,因此可以调用 update_idletasks