我在尝试用圆圈在画布上移动来模拟一个简单的太阳系。然而,我一直在试图找到一种方法来为它们设置动画。我环顾四周,发现move
函数与after
相结合,可以创建一个动画循环。我试图通过改变参数来改变y
偏移并在弯曲路径中创建移动,但是当我尝试递归地或者使用while
循环来实现这一点时,我失败了。以下是我目前掌握的代码:
import tkinter
class celestial:
def __init__(self, x0, y0, x1, y1):
self.x0 = x0
self.y0 = y0
self.x1 = x1
self.y1 = y1
sol_obj = celestial(200, 250, 250, 200)
sx0 = getattr(sol_obj, 'x0')
sy0 = getattr(sol_obj, 'y0')
sx1 = getattr(sol_obj, 'x1')
sy1 = getattr(sol_obj, 'y1')
coord_sol = sx0, sy0, sx1, sy1
top = tkinter.Tk()
c = tkinter.Canvas(top, bg='black', height=500, width=500)
c.pack()
sol = c.create_oval(coord_sol, fill='black', outline='white')
top.mainloop()
下面是一个使用tkinter
after
方法更新对象和关联的canvasoval
对象位置的方法。它使用一个生成器函数来计算圆形路径上的坐标,该路径表示Celestial
实例(名为planet_obj1
)之一的轨道。在下面是跑步的样子:
{a1}
相关问题 更多 >
编程相关推荐