#python #function #canvas #repeat #tkinter-canvas
Вопрос:
Я хочу, чтобы эта функция защиты повторилась, как только мяч коснется земли (граница окна). Я попытался использовать if, для цикла и while:, но мне не удалось заставить его работать. Я новичок, так что, может быть, я просто совершаю глупые ошибки. Спасибо за помощь.
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: Я хочу повторить функцию def в Python после определенного события.
Комментарии:
1. Ваша
ball()
функция, похоже, уже повторяется, но, похоже, она также перестает повторяться послеoval
того, как доходит до конца. Вы хотели, чтобы в то время это было что-то другое?2. Я хочу, чтобы функция ball() повторилась, как только мяч опустится на дно, но я просто не могу ее повторить.
Ответ №1:
Похоже, вы просто хотите сбросить 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()
Ответ №2:
Я реализую ситуацию с 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)
Возможно, этот фрагмент даст некоторое представление о вашем случае, как выйти из base
функции, просто добавив return
к этому.