【问题标题】:about Python canvas moving object关于Python画布移动对象
【发布时间】:2022-11-23 14:49:59
【问题描述】:

我想以 50 的步长从左向右移动一个矩形,但画布在到达右侧之前不会绘制矩形。

import tkinter as tk
import time
root=tk.Tk()
c_width,c_height=500,250
cv = tk.Canvas(root,bg = 'white',width=c_width,height=c_height)

l_x=0
l_y=0
r_x=50
r_y=50
step=50
r1=cv.create_rectangle(l_x,l_y,r_x,r_y,fill='red')

while l_x<c_width-50:
   
   cv.delete(r1)
   l_x=l_x+step
   r_x=r_x+step   
   r1=cv.create_rectangle(l_x,l_y,r_x,r_y,fill='red')
   print(c_width,l_x)
   time.sleep(1)

cv.pack()
root.mainloop()

【问题讨论】:

标签: python-3.x tkinter


【解决方案1】:

这有帮助吗?我只是注释掉第 16 行。并在 while/else 条件块之外添加了 root.after

代码:

import tkinter as tk
import time
root=tk.Tk()
c_width,c_height=500,250
cv = tk.Canvas(root,bg = 'white',width=c_width,height=c_height)

l_x=0
l_y=0
r_x=50
r_y=50
step=50
r1=cv.create_rectangle(l_x,l_y,r_x,r_y,fill='red')

while l_x<c_width-50:
   
   #cv.delete(r1)
   l_x=l_x+step
   r_x=r_x+step   
   r1=cv.create_rectangle(l_x,l_y,r_x,r_y,fill='red')
   print(c_width,l_x)
root.after(100)

cv.pack()
root.mainloop()

结果:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    相关资源
    最近更新 更多