Найти - Пользователи
Полная версия: Анимация в tkinter
Начало » Центр помощи » Анимация в tkinter
1
gleda
Здравствуйте! Пытаюсь сделать анимацию в 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()
4kpt_II
Ну во-первых Вы написали не в той теме
По Вашему вопросу. Лучше в 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()

P.S. from tkinter import * использовать нельзя никогда!!!
gleda
Спасибо большое за ответ. Насчет не той темы не знала, больше не буду.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB