使用 tkinter 创建椭圆的流畅运动
Creating fluid movement of an oval using tkinter
我正在尝试使用 tkinter 创建 Connect-Four。将圆盘放入特定列后,我希望它以流畅的运动下降到列的底部。
我试过使用 Canvas class 的移动命令,但我不确定我是否使用不正确,或者我最好删除并重新绘制每个椭圆迭代。目前,圆盘确实在移动,但不是以流畅的方式移动。它只是将其绘制在新位置。
这是转盘功能:
counter = 0
self.__canvas.create_oval(100,200,0,100, fill='yellow')
self.__canvas.create_oval(100,300,0,200, fill='yellow')
self.__canvas.create_oval(100,400,0,300, fill='brown')
disc = self.__canvas.create_oval(200,400,100,300, fill='green') # trying to move this specific disc
while counter < 10:
self.__canvas.move(disc, 0, counter)
counter += 1
您必须调整呼叫移动的速度,以便移动可见; canvas.after()
允许您重复调用函数,在这种情况下,直到满足条件(磁盘到达目的地)
工作代码片段
import tkinter as tk
def smooth_motion(counter):
canvas.move(disc, 0, dy)
counter -= 1
if counter >= 0:
canvas.after(10, smooth_motion, counter)
root = tk.Tk()
canvas = tk.Canvas(root, bg='cyan')
canvas.pack()
counter = 100
disc = canvas.create_oval(200, 0, 210, 10, fill='green')
dy = (100 - 0) / counter
smooth_motion(counter)
root.mainloop()
我正在尝试使用 tkinter 创建 Connect-Four。将圆盘放入特定列后,我希望它以流畅的运动下降到列的底部。
我试过使用 Canvas class 的移动命令,但我不确定我是否使用不正确,或者我最好删除并重新绘制每个椭圆迭代。目前,圆盘确实在移动,但不是以流畅的方式移动。它只是将其绘制在新位置。
这是转盘功能:
counter = 0
self.__canvas.create_oval(100,200,0,100, fill='yellow')
self.__canvas.create_oval(100,300,0,200, fill='yellow')
self.__canvas.create_oval(100,400,0,300, fill='brown')
disc = self.__canvas.create_oval(200,400,100,300, fill='green') # trying to move this specific disc
while counter < 10:
self.__canvas.move(disc, 0, counter)
counter += 1
您必须调整呼叫移动的速度,以便移动可见; canvas.after()
允许您重复调用函数,在这种情况下,直到满足条件(磁盘到达目的地)
工作代码片段
import tkinter as tk
def smooth_motion(counter):
canvas.move(disc, 0, dy)
counter -= 1
if counter >= 0:
canvas.after(10, smooth_motion, counter)
root = tk.Tk()
canvas = tk.Canvas(root, bg='cyan')
canvas.pack()
counter = 100
disc = canvas.create_oval(200, 0, 210, 10, fill='green')
dy = (100 - 0) / counter
smooth_motion(counter)
root.mainloop()