Python анимация холста tkinter - PullRequest
0 голосов
/ 29 января 2020

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

import tkinter
canvas = tkinter.Canvas(bg="white",width=(900),height=(900))
canvas.pack()


def ball():
    global x
    canvas.delete("all")
    canvas.create_oval(x-100,y-100,x+100,y+100,fill="orange",outline="black",width=4)
    x = x+5
    if x <800:
        canvas.after(20,ball)

def ball_back():
    global x
    canvas.delete("all")
    canvas.create_oval(x-100,y-100,x+100,y+100,fill="orange",outline="black",width=4)
    x = x-5
    if x >100:
        canvas.after(20,ball_back)

x = 100
y = 300
ball()
ball_back()

1 Ответ

3 голосов
/ 29 января 2020

То, как Tkinter вызывает эти методы, немного отличается от того, что вы можете ожидать. И ball, и ball_back вызываются сразу один за другим. Поскольку ball_back не может выполнить оператор if прямо из шлюза (x больше 100), он никогда не будет вызван снова. Попробуйте изменить последние строки ball на это:

x = x+5
if x <800:
    canvas.after(20,ball)
else:
    canvas.after(20, ball_back)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...