Задать вопрос
@NightCAT_Busya
pycatdranigbus

Коснулся ли первый объект второго? Как узнать в python tkinter?

Код:
from tkinter import *
import time
root=Tk()
canvas=Canvas(root, width=700, height=700)
canvas.pack()
canvas.create_polygon(50, 2, 90, 10, 10, 10,
                      fill='red',
                      outline='black')
def movetriangle(event):
    if event.keysym=='Up':
        canvas.move(1, 0, -3)
    elif event.keysym=='Down':
        canvas.move(1, 0, 3)
    elif event.keysym=='Left':
        canvas.move(1, -7, 0)
    elif event.keysym=='Right':
        canvas.move(1, 7, 0)
canvas.bind_all('<KeyPress-Up>', movetriangle)
canvas.bind_all('<KeyPress-Down>', movetriangle)
canvas.bind_all('<KeyPress-Left>', movetriangle)
canvas.bind_all('<KeyPress-Right>', movetriangle)
root.mainloop()


Сейчас есть только один объект. А если добавить второй. Как узнать коснулся ли первый объект второго? А если второй объект коснулся стены, как это узнать?
  • Вопрос задан
  • 153 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
yupiter7575
@yupiter7575
Python программист
В tkinter canvas нет такого события. Нужно вручную проверять по координатам. Например для верхней стороны:
if pos[2] >= pos1[0] and pos[0] <= pos1[2]: 
     if pos[3] >= pos1[1] and pos[3] <= pos1[3]:
          print('коснулся')

Где pos массив с координатами углов первого обьекта (x,y, x2, y2), а pos1 второго
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
08 дек. 2024, в 21:02
13000 руб./за проект
08 дек. 2024, в 21:00
2000 руб./за проект
08 дек. 2024, в 19:02
3000 руб./за проект