Python, Ткинтер. Как начать круг движения после их остановки? - PullRequest
0 голосов
/ 26 февраля 2020

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

from tkinter import *
animation = Tk()
canvas = Canvas(animation, width=800, height=700)
canvas.pack()
x1 = 250
y1 = 110
a1 = 260
b1 = 120
x1_vel = 0
y1_vel = 5

coord1 = [x1, y1, a1, b1]
circle1 = canvas.create_oval(coord1, fill="blue")
def move1():
    global x1
    global y1
    global x1_vel
    global y1_vel
    if y1 > 550:
        y1_vel = 0
        x1_vel = - 5
    if x1 < 180:
        y1_vel = - 5
        x1_vel = 0
    if y1 < 90:
        x1_vel = 5
        y1_vel = 0
    if x1 > 430:
        y1_vel = 5
        x1_vel = 0
    if y1 > 570:
        x1_vel = -5
        y1_vel = 0
    if x1 < 90:
        x1_vel = 0
    canvas.move(circle1, x1_vel, y1_vel)
    coordinates = canvas.coords(circle1)
    x1 = coordinates[0]
    y1 = coordinates[1]
    animation.after(33, move1)

move1()
animation.mainloop()

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

1 Ответ

0 голосов
/ 26 февраля 2020

Чтобы запустить их автоматически, добавьте еще один оператор if в функцию move1 следующим образом:

if x1_vel == 0 and y1_vel == 0:
    x1_vel = 5 # change to random number
    y1_vel = 5 # change to random number

Возможно, что круг может go за пределами экрана . Поэтому выберите логическое значение для x1_vel и y1_vel

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