Так что это на самом деле довольно просто.Я планирую шаги для начала работы с первым блоком, а затем все будет легко.
Я начал с верхнего левого и среднего блоков и использовал координаты линии, которые вы использовали для полученияверхняя правая и нижняя левая точки каждой коробки.Затем я проверяю, лежат ли координаты щелчка мышью между этими точками и, следовательно, находятся в заданном поле.
from tkinter import *
class Window(Tk):
def __init__(self):
Tk.__init__(self)
self.mygui()
# Define the bounds of each box based on the lines drawn in mygui
self.topleft = [(100,220), (50, 140)]
self.topmiddle = [(220, 370), (50, 140)]
def mygui(self):
self.title('Naughts and Crosses')
self.geometry('600x400+700+300')
self.bind('<Button-1>', self.get_location)
#creating a naughts and crosses board
canvas = Canvas(self, width=1000, height=1000)
canvas.create_line(100, 140, 500, 140)
canvas.create_line(100, 250,500, 250)
canvas.create_line(220, 50, 220, 350)
canvas.create_line(370, 50, 370, 350)
canvas.pack()
def get_location(self, eventorigin):
x = eventorigin.x
y = eventorigin.y
# x and y will return three figure coordinates, this is where i am stuck.
print(x, y)
print(self.topleft)
print(self.topmiddle)
# Check if the mouse click is in the top left box
if(x > self.topleft[0][0] and x < self.topleft[0][1]):
if(y > self.topleft[1][0] and y < self.topleft[1][1]):
print("In top left")
# Check if the mouse click is in the top middle box
if(x > self.topmiddle[0][0] and x < self.topmiddle[0][1]):
if(y > self.topmiddle[1][0] and y < self.topmiddle[1][1]):
print("In top middle")
Window().mainloop()
Есть много других способов сделать это, но этого должно быть достаточно, чтобы начать работу.
Как вы можете видеть в моем примере, у каждой коробки есть две определяющие точки.Чтобы нарисовать х в этом поле, просто нарисуйте одну из линий от одной из этих точек к другой, а затем нарисуйте другую линию перпендикулярно этому.Это не должно быть слишком сложно.Чтобы нарисовать точку в центре, просто нарисуйте ее в центральной точке двух определяющих x координат блока.