示例#1
0
class Controlador():
    def __init__(self, vista):
        self.app = vista
        self.cronometro = Cronometro()
        #self.app.btnIniciar['command'] = self.iniciar
        self.app.btnIniciar['command'] = self.interruptor
        self.app.btnReiniciar['command'] = self.reiniciar
        self.app.root.mainloop()

    #Metodo donde se reinicio el cronometro
    def reiniciar(self):
        self.cronometro.corriendo = False
        self.app.actualizarTiempo(self.cronometro.reiniciar())

    #Metodo para parar el cronometro
    def interruptor(self):
        if self.cronometro.corriendo:
            self.cronometro.corriendo = False
            self.app.btnIniciar.config(fg='blue', text='Iniciar')
        else:
            self.cronometro.corriendo = True
            self.app.btnIniciar.config(fg='red', text='Parar')
            self.iniciar()

    #Metodo para iniciar el cronometro
    def iniciar(self):
        self.app.actualizarTiempo(self.cronometro.iniciar())
        self.app.root.after(100, self.iniciar)
class VentanaCronometro():
    def __init__(self):
        self.ventana = tk.Tk()
        self.ventana.geometry('500x200')
        self.ventana.resizable(0, 0)
        self.ventana.title('Cronometro')
        self.ventana.config(background='#72a922')
        self.cronometro_label = tk.Label(text="",
                                         font=('Tahoma', 44),
                                         fg='#ffffff',
                                         bg='#1f2f3f',
                                         pady=10,
                                         padx=10)
        self.cronometro_label.place(x=20, y=30)
        self.cronometro = Cronometro()
        self.activo = True
        self.frame = Frame(self.ventana)
        self.cronometro_label.configure(text=self.cronometro.mostrarTiempo())
        self.btnIniciar = Button(self.frame,
                                 fg='blue',
                                 text='Iniciar',
                                 command=self.actualizar)
        self.btnIniciar.grid(row=1, column=1)
        self.btnParar = Button(self.frame,
                               fg='blue',
                               text='Parar',
                               command=self.parar)
        self.btnParar.grid(row=1, column=2)
        btnReiniciar = Button(self.frame,
                              fg='blue',
                              text='Reiniciar',
                              command=self.reiniciar)
        btnReiniciar.grid(row=1, column=3)
        self.frame.pack(side=tk.BOTTOM)
        self.ventana.mainloop()

    def actualizar(self):
        global proceso
        self.cronometro.iniciar()
        self.cronometro_label.configure(text=self.cronometro.mostrarTiempo())
        proceso = self.ventana.after(1, self.actualizar)
        self.btnIniciar.grid_forget()

    def parar(self):
        global proceso
        self.cronometro.detener()
        self.ventana.after_cancel(proceso)
        if self.activo:
            self.btnParar.configure(text='Reanudar')
            self.activo = False
        else:
            self.btnParar.configure(text='Parar')
            self.activo = True
            proceso = self.ventana.after(1, self.actualizar)

    def reiniciar(self):
        global proceso
        self.cronometro.reiniciar()
        self.ventana.after_cancel(proceso)
        self.cronometro_label.configure(text=self.cronometro.mostrarTiempo())
        self.btnIniciar.grid(row=1, column=1)
        self.frame.pack(side=tk.BOTTOM)