from tkinter import *
from time import *
import threading, sys
time_step = 0.1
killed = False
root = Tk()
def finish():
global killed
killed = True
sys.exit(0)
def butClick(e):
finish()
x = 1
y = 1
k = 0
dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]
size = 5
def handleKey(e):
global k
if e.char == 'q': finish()
if e.char == 'w': k = 3
if e.char == 's': k = 2
if e.char == 'a': k = 1
if e.char == 'd': k = 0
root.title("Snake")
root.bind("<Key>", handleKey);
root.geometry("500x500")
but = Button(root,
text="Exit",
width=30,height=4,
bg="white",fg="red"
)
but.bind("<Button-1>", butClick);
but.pack()
label = Label(root, text="Press a-w-s-d", fg='red', bg='white')
label.pack()
w = Canvas(root, width=200, height=100)
w.create_rectangle(2, 2, 200, 100, fill="#8888ff", outline="#0000ff")
w.pack()
def draw():
global x, y, k, dx, dy, size, killed
while not killed:
w.create_rectangle(x * size, y * size, (x + 1) * size, (y + 1) * size, fill="#ff0000")
x += dx[k]
y += dy[k]
sleep(time_step)
threading.Thread(target=draw).start()
# Start the window's event-loop
root.mainloop()