如何在 Canvas 中重复 def 函数?

How can I repeat a def function in Canvas?

我希望这个 def 函数在球落地后立即重复自身(window 的边界) 我尝试使用 iffor loopwhile:,但我无法做到工作。我是初学者,所以也许我只是在犯愚蠢的错误。感谢您的帮助。

import tkinter
canvas = tkinter.Canvas(width=600, height=600)
canvas.pack()

def ball():
    canvas.delete('all')
    global y
    canvas.create_oval(x - 5,y - 5,x + 5,y + 5, fill = 'red')
    y = y + 2
    if y < 600:
        canvas.after(2, ball)
y = 0
x=300
ball()

TL;DR: 我想在某个事件后在 Python 中重复一个 def 函数。

我用 python 实现了一个场景,向您展示如何使用 while 循环以及如何使用 return 让您的函数在某些事件后退出循环。 这只是一个更好地理解答案的例子。并且不要在代码中使用全局变量。只是为了举例。

a = 100

def count_down():
  global a
  a -= 1
  if a > 0:
    return True
  return False


in_the_loop = True

while(in_the_loop):
  in_the_loop = count_down()
  print(a)

也许这段代码可以让您了解如何通过简单地向 return 添加 return 来退出 base 函数。

听起来您只想重置 y 值:

import tkinter
canvas = tkinter.Canvas(width=600, height=600)
canvas.pack()

def ball():
    canvas.delete('all')
    global y
    canvas.create_oval(x - 5,y - 5,x + 5,y + 5, fill = 'red')
    y = y + 2
    if y >= 600:
        y = 0   # Restart y from 0 again
    canvas.after(2, ball)
y = 0
x=300
ball()