I\'m trying to create Connect-Four using tkinter. Once a disc is placed in a certain column, I want it to descend to the bottom of the column in a fluid movement.
I\'ve
You must pace the calls to move so that the movement is visible; canvas.after()
allows you to call a function repeatedly, in this case until a condition is met (the disk arrived at destination)
working code snippet
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()
You're missing function which shows changes to canvas - canvas.update()
, try writing it after canvas.move()
.