我如何在python中使用set计时器制作动画?

时间:2015-09-24 21:11:18

标签: python animation timer tkinter

我正在尝试使用与计时器一起使用的动画。当时间结束时,动画应该同时完成。我正在考虑做手机中的电池条。这就是为什么我在另一个窗口中有一个绿色矩形,但我不知道如何做绿色变黑或矩形用计时器慢慢排空。如果您对动画有其他建议,可以这样做。感谢

from tkinter import *
import math
import time

aux=False
segundo=60

Ventana1 = Tk()
Ventana1.title("Timer")
Ventana1.geometry("500x350+100+100")

def paso():
    global aux
    global segundo

    if aux:
        segundo -= 1
        tiempo["text"] = segundo
        tiempo.after(1000, paso)

    if segundo==0:
       aux=False
       tiempo.configure(text=segundo, fg="blue")

    if segundo<21:
       tiempo.configure(text=segundo, fg="red")

def inicio ():
    global aux
    global segundo

    segundo=segundo
    if aux:
        pass

    else:
        aux=True
        paso()
        tiempo.configure(text=segundo, fg="blue")

def pausa ():
    global aux, segundo

    aux=False
    tiempo.configure(text=segundo, fg="blue")

def reset ():
    global aux
    global segundo

    segundo=int(Entry.get(Segunditos)) + 60*int(Entry.get(Minuticos))
    aux=False
    tiempo["text"] = segundo
    tiempo.configure(text=segundo, fg="blue")

tiempo = Label(Ventana1, text=segundo, font=("calibri", 200))
tiempo.pack()

Button(Ventana1, text="Arranquelo", command= inicio).place(x=120, y=220)#Button start
Button(Ventana1, text= "Parelo", command= pausa).place(x=200, y=220)#button pause
Button(Ventana1, text= "Acabelo", command= reset).place(x=300, y=220)#button reset

MinAviso=Label(Ventana1, text="Minutos").place(x=125, y=260)
SegAviso=Label(Ventana1, text="Segundos").place(x=305, y=260)

Minuticos=Entry(Ventana1)
Minuticos.place(x=70, y=290)

Segunditos=Entry(Ventana1)
Segunditos.place(x=250, y=290)

from tkinter import *

Ventana2 = Tk()

Canvas = Canvas(Ventana2, width=2000, height=1500)
Canvas.pack()
Canvas.create_rectangle(200, 200, 1000, 300, fill="green")

mainloop()

#Ventana1.mainloop()

1 个答案:

答案 0 :(得分:0)

最大的问题是您正在创建Tk的两个实例。 Tkinter的设计并非如此。如果需要浮动窗口,请创建Toplevel

的实例

接下来,您需要保存对要在画布上绘制的矩形的引用。

Canvas = Canvas(Ventana2, ...)
rect = Canvas.create_rectangle(...)

当您的计时器运行时,您可以使用该引用修改对象。

def paso():
    ...
    if aux:
        ...
        Canvas.itemconfigure(rect, ...)