Задать вопрос
@Dmitry01

Вопрос, почему питон в цикле While не отрисовывает объекты?

задача:реализовать анимацию перемещения круга.
from tkinter import *
import time 

root = Tk()

canvas = Canvas(root,width=1000,height=500)
x=0
y=0
canvas.create_oval(x,y,x+10,y+10)
start_time = time.time()
sec = 10
while (time.time()-start_time) <= sec:
	canvas.delete('all')
	x=20*(time.time()-start_time)
	y=30*(time.time()-start_time)
	canvas.create_oval(x,y,x+10,y+10)

canvas.pack()
root.mainloop()

но,когда запускаю скрипт ничего не происходит 10 секунд, а потом появляется результат в виде окна и круга в конечной точке x=200,y=300 но самой анимации не было, в чем может быть проблема?
  • Вопрос задан
  • 809 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
AMar4enko
@AMar4enko
Потому что обработка всех событий в оконном приложении, в том числе перерисовка окна, происходит в event loop. Вы своим циклом его "останавливаете".
Ответ написан
Попробуйте добавить обновление холста canvas.update()

from tkinter import *
import time

root = Tk()

canvas = Canvas(root,width=1000,height=500)
x=0
y=0
canvas.create_oval(x,y,x+10,y+10)
canvas.pack()
start_time = time.time()
sec = 10
while (time.time()-start_time) <= sec:
canvas.delete('all')
x=20*(time.time()-start_time)
y=30*(time.time()-start_time)
canvas.create_oval(x,y,x+10,y+10)
canvas.update()

root.mainloop()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
31 янв. 2025, в 06:03
9999999 руб./за проект
31 янв. 2025, в 06:02
9999999 руб./за проект
31 янв. 2025, в 06:02
9999999 руб./за проект