Вот как вы можете использовать координаты событий, чтобы определить, на каком квадрате крестики-нолики щелкнул пользователь:
from tkinter import *
# Creates Window
tk = Tk()
width = 600
third = width / 3
canvas = Canvas(tk, width=width, height=width)
tk.title('Tic Tac Toe')
canvas.pack
# Creates Board
canvas.create_line(third, 0, third, width)
canvas.create_line(third*2, 0, third*2, width)
canvas.create_line(0, third, width, third)
canvas.create_line(0, third*2, width, third*2)
def draw_cross(row,col):
canvas.create_line(col * third, row * third, (col + 1) * third, (row + 1) * third)
canvas.create_line((col + 1) * third, row * third, col * third, (row + 1) * third)
def mouse_click(event):
col = int(event.x / third)
row = int(event.y / third)
draw_cross(row,col)
canvas.pack()
canvas.bind("<Button-1>", mouse_click)
canvas.mainloop()
Прежде всего я параметризовал размеры платы с помощью переменных ширина и третья - просто измените ширина , и все изменится правильно.
Во-вторых, нажатие кнопки мыши на холсте вызывает mouse_click обработчик событий, который получает координаты точки на холсте, на котором была нажата мышь (event.x и event.y), и вычисляет соответствующую строку (0, 1 или 2) истолбец (0, 1 или 2) квадрата на плате крестики-нолики.Затем они передаются в качестве параметров в функцию draw_cross , которая рисует две диагонали для этого квадрата.
Надеюсь, что это поможет.