Как сделать перемещение объекта в python
Перейти к содержимому

Как сделать перемещение объекта в python

Как передвигать объекты в canvas tkinter мышкой

Я пробовал функцию move, но она не подходит, так как мне нужно передвигать объекты по заданным координатам.

user avatar

Для перемещения фигур на canvas по координатам используйте метод coords.

Пример (по клику по canvas перемещаем круг):

user avatar

Положение объектов на Canvas (на холсте) задаётся в координатах. Эти координаты хранятся в самих объектах, созданных на холсте. Чтобы передвинуть объект, его нужно перерисовать в новом месте. Для этого нужно просто изменить его координаты. Для этого есть метод coords(). Нужно передать в него новые координаты объекта.

Одни объекты имеют простую координату x,y (такие как например Text). Но некоторые объекты могут иметь и более сложное обозначение в пространстве. Например, при создании овала нужно передать: (левая_граница_по_x, нижняя_граница_по_y, правая граница_по_x, верхняя граница_по_y).

При передвижении объекта нужно передавать тот же тип координат, что при создании, но уже для нового места, куда мы передвинули объект. Для этого нужно взять координаты положения указателя на холсте и на их основе указать новые координаты объекта в метод coords().

Чтобы это сделать мы используем метод tag_bind(). В него мы передадим:

имя_объекта который мы передвигаем;

событие (действие которое совершает пользователь и на которое реагирует наша программа);

и действие которое программа должна совершить на событие совершённое пользователем.

Делается это вот так: имя_экземпляра_класса_Canvas.tag_bind(имя_объекта, событие, действие).

Метод bind() реагирует на событие на всём холсте. Если использовать его, то привязать событие к конкретному объекту не получится. Регистрироваться событие будет на всей площади холста.

На месте «действия» лучше передавать функцию или метод. (Я приведу пример с функцией) Делать это лучше через lambda. Благодаря этому действие будет совершаться не сразу при запуске программы, а лишь тогда, когда пользователь совершит «событие» и метод coords() полноценно сработает, запустив «действие» через lambda.

Метод coords() передаёт в функцию «действия» координаты объекта в виде аргумента. Чтобы перехватить эти координаты, нужно в своей функции предусмотреть аргумент. Рекомендуется давать ему имя event

В event’е хранятся координаты указателя в момент события. Мы достаём их и на их основе генерируем координаты для нашего объекта, с учётом его размеров.

Python — перемещение объекта в PyGame

Pygame — это кроссплатформенный набор модулей Python, предназначенный для написания видеоигр. Он включает компьютерную графику и звуковые библиотеки, предназначенные для использования с языком программирования Python. Теперь зависит от воображения или необходимости разработчика, какой тип игры он / она хочет разработать с помощью этого инструментария.

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

Основная идея этого заключается в изменении координат объекта и обновлении экрана. Когда экран обновляется каждый раз, когда цвет окна заполняется исходным цветом, и формируется новый прямоугольник, поэтому при нажатии клавиш со стрелками координаты меняются, и кажется, что объект движется.

Обработка ввода и анимации¶

Взаимодействие пользователя с компьютером основано на событиях, любые действия производимые пользователем порождают события — движение мыши, нажатия клавиш, специальных кнопок. Внутри библиотеки PyGame есть инструменты для обратки событий, которые происходят внутри приложений.

Мы с вами уже знакомы с методом получения всех произошедших событий — pygame.event.get() , который возвращает события, произошедшие с последнего обращения.

Помимо событий выхода из приложения pygame.QUIT , есть множество других — например, нажатия клавиш pygame.KEYDOWN или отпускания pygame.KEYUP .

Рассмотрим взаимодействие с событиями на примере небольшой программы, в которой по нажатию клавиш показывается квадрат:

В данном блоке программа занимется обработкой нажатия клавиш. Сначала мы получаем список всех событий, после чего начинаем последовательно проверять их. Если одно из событий соответствует сигналу к завершению программы, закрываем окно. Если же это нажатие клавиши — перекрашиваем прямоугольник в белый цвет.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *