我的问题是,当我使用时:
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()一起运行,我真的希望有一个替代它。
答案 0 :(得分:0)
在tk(inter)中,使用root.after完成实时循环。您可以通过搜索[tkinter] root.after
找到有关SO的多个示例。下面是您的代码的版本,缩小为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()
答案 1 :(得分:0)
<div class="flexcontainer">
<div>
<img src="" alt="Employee's Picture" id="picture">
</div>
<div>
<ul>
<li>
<h3>Full name: <span id="name"></span></h3>
</li>
<li>
<h3>Gender: <span id="gender"></span></h3>
</li>
<li>
<h3>Phone number: <span id="phone"></span></h3>
</li>
<li>
<h3>Company: <span id="company"></span></h3>
</li>
<li>
<h3>Address: <span id="address"></span></h3>
</li>
</ul>
</div>
</div>
之后插入代码
root.update()
它会实时更新对我有用的所有更改
示例
cans.create_line(i,0,0,i)