Форум сайта python.su
Здравствуйте! Пытаюсь сделать анимацию в tkinter. Если не ограничивать анимацию по времени, все в порядке, но если попытаться вставить ограничения, то при запуске выдает статичную картинку с объектом, уже находящемся в конечной точке. А желательно бы, так сказать, наблюдать эту анимацию. Что я делаю не так?
Питон 3.3.0
from tkinter import * import time def time(n): if n<80: canvas.move(obj,1,1) canvas.after(5,time(n+1)) frame=Tk() canvas = Canvas(frame, width=690, height=700, background="#010214") canvas.grid() obj=canvas.create_oval(60,60,120,120,fill='#FFF70F',width=0) time(0) frame.mainloop()
Офлайн
Ну во-первых Вы написали не в той теме
По Вашему вопросу. Лучше в tkinter не использовать timer. Там есть свой механизм таймирования - метод .after. И не забывайте использовать lambda…
Ваш код:
import tkinter # # def time_move(n): if n < 80: canvas.move(obj, 1, 1) canvas.after(50, lambda: time_move(n + 1)) # frame = tkinter.Tk() frame.geometry("690x700+400+0") canvas = tkinter.Canvas(frame, width=690, height=700, background="#010214") canvas.grid() # obj = canvas.create_oval(60, 60, 120, 120, fill='#FFF70F', width=0) canvas.after(50, lambda: time_move(0)) # frame.mainloop()
Отредактировано 4kpt_II (Дек. 13, 2014 19:02:25)
Офлайн
Спасибо большое за ответ. Насчет не той темы не знала, больше не буду.
Офлайн