Tkinter Canvas Sense Touch? - PullRequest
       4

Tkinter Canvas Sense Touch?

0 голосов
/ 09 февраля 2019

Я работаю над небольшой игрой, и мне интересно, есть ли способ для объекта холста tkinter обнаружить, если что-то касается его.В настоящее время я использую что-то вроде этого:

pos = canvas.coords(insert_object_here)
otherpos = canvas.coords(other_object)    
if pos[3] <= objectpos[3] and pos[1] >= objectpos[1]:
    if pos[2] <= objectpos[0]:
        if pos[2] >= objectpos[0]-self.speed:
            canvas.move(self.id, -x, y)
    if pos[0] >= objectpos[2]:
        if pos[0] <= objectpos[2]+self.speed:
            canvas.move(self.id, -x, y)
if pos[2] <= objectpos[2] and pos[0] >= objectpos[0]:
    if pos[3] <= objectpos[1]:
        if pos[3] >= objectpos[1]-self.speed:
            canvas.move(self.id, x, -y)
    if pos[1] >= objectpos[3]:
        if pos[1] <= objectpos[3]+self.speed:
            canvas.move(self.id, x, -y)

canvas.move(self.id, x, y)

Это много кода, и мне нужно использовать его только один раз, что делает использование функции бессмысленным.

Итак, есть ли способ для объекта, чтобы обнаружить касание, или, по крайней мере, есть способ улучшить этот код?

1 Ответ

0 голосов
/ 09 февраля 2019

У холста есть методы с именами find_closest и find_overlapping, которые можно использовать для определения касания объектов или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...