如何制作在 for 循环中画线的函数(tkinter 3.x)

How to make functions that draw lines in a for loop(tkinter 3.x)

我的问题是,当我使用 :

from tkinter import *
import time

root = Tk()
root.geometry("800x850")

cans=Canvas(root,height=500,width=600)

a=Scale(root,from_=0,to=600)
b=Scale(root,from_=0,to=500)
c=Scale(root,from_=0,to=600)

for i in range(0,50):
    cans.create_line(i,0,0,i)  #< the loop that i am talking about

cans.pack()
root.mainloop()

tkinter 的作用是,它会一直等到画完线条(直到循环自己重复 50 次),然后才显示应用程序。

我想用这个循环做的是让 tkinter 在显示应用程序时实时绘制线条。 有人可以给我另一种方法来执行此操作,或者告诉我代码有什么问题吗?

更新:Tkinter 的 mainloop() 不允许任何循环 运行,我真的希望有一个替代方案。

在tk(inter)中,实时循环是用root.after完成的。 SO 上有多个示例,您可以通过搜索 [tkinter] root.after 找到。以下是您的代码的一个版本,简化为 MCVE,行间距有点。

from tkinter import *
import time

root = Tk()

cans=Canvas(root,height=500,width=600)
cans.pack()

delay = 200  # milliseconds
def draw_line(i=0):
    if i <= 150:
        cans.create_line(i,0,0,i)
        root.after(delay, draw_line, i+3)

draw_line()       
root.mainloop()

在每个 cans.create_line(i,0,0,i)

之后插入代码
root.update()


它会实时更新对我有用的任何更改
示例

for i in range(0,50):
    cans.create_line(i,0,0,i)
    root.update()