Python - Ayuda con codigo-Cronometro

 
Vista:

Ayuda con codigo-Cronometro

Publicado por Nacho (1 intervención) el 13/10/2019 04:34:02
Buenas, como estan?
Ante todo me presento, soy Nacho, recién iniciándome en el mundo de python

Tengo una duda con un codigo que estoy trabajando, a ver si pueden darme una mano:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
from tkinter import *
 
proceso=0
 
variable = True
 
def iniciar(h=0, m=0, s=0):
    global proceso
 
    #Verificamos si los segundos y los minutos son mayores a 60
    #Verificamos si las horas son mayores a 24
    if s >= 60:
        s=0
        m=m+1
        if m >= 60:
            m=0
            h=h+1
            if h >= 24:
                h=0
 
    #etiqueta que muestra el cronometro en pantalla
    time['text'] = (f"{h:02d}:{m:02d}:{s:02d}")
    time2['text'] = (f"{h:02d}:{m:02d}:{s:02d}")
    time3['text'] = (f"{h:02d}:{m:02d}:{s:02d}")
    time4['text'] = (f"{h:02d}:{m:02d}:{s:02d}")
 
    # iniciamos la cuenta progresiva de los segundos
    proceso=time.after(1000, iniciar, (h), (m), (s+1))
 
 
 
def parar():
    global proceso
    time.after_cancel(proceso)
 
root = Tk()
root.title('Cronometro')
 
 
time = Label(root, fg='red', width=200, font=("","48"))
#time.place (x=280, y=420, width=200, height=80)
time.pack()
 
 
time2 = Label(root, fg='red', width=800, font=("","48"))
#time2.place (x=300, y=220, width=100, height=30)
time2.pack()
 
time3 = Label(root, fg='red', width=800, font=("","48"))
#time2.place (x=300, y=220, width=100, height=30)
time3.pack()
 
 
time4 = Label(root, fg='red', width=800, font=("","48"))
#time2.place (x=300, y=220, width=100, height=30)
time4.pack()
 
# si queremos que se autoejecuta al iniciar el programa hay que desomentar
# esta linea y comentar los botones
 
iniciar()
 
# Generamos un frame para poner los botones de iniciar y parar
frame=Frame(root)
btnIniciar=Button(frame, fg='blue', text='Iniciar', command=iniciar)
btnIniciar.grid(row=1, column=1)
btnParar=Button(frame, fg='blue', text='Parar', command=parar)
btnParar.grid(row=1, column=2)
frame.pack()
 
 
 
root.mainloop()

Primero, " time['text'] = (f"{h:02d}:{m:02d}:{s:02d}")
en estos casos que es que "text" este entre [ ] ? (lo que sigue despues del "=" si lo entiendo)

Segundo "proceso=time.after(1000, iniciar, (h), (m), (s+1))"
"time.after" es un proceso del modulo "time"? Alguno sabe la explicacion y como se utiliza?

Tercero, intente meter los cronometros dentro de algun label (necesito enmarcalos) o posicionarlos diferentes pero no puedo. Alguno podria decirme como hacerlo o que es lo que me lo esta impidiendo?

Bueno gente, no se realmente cuan complejo sera lo que estoy preguntando, pero soy muy dummy en esto asi que espero que puedan darme una mano.

Desde ya gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda con codigo-Cronometro

Publicado por tincopasan (1082 intervenciones) el 14/10/2019 03:10:47
hola:
1
2
Primero, " time['text'] = (f"{h:02d}:{m:02d}:{s:02d}")
en estos casos que es que "text" este entre [ ]

es la forma de asignarle a la propiedad text del label una cadena.

1
2
Segundo "proceso=time.after(1000, iniciar, (h), (m), (s+1))"
"time.after" es un proceso del modulo "time"? Alguno sabe la explicacion y como se utiliza?

lo que está haciendo es como decirle a la aplicación que espere, en este caso un segundo para ejecutar la función, viene a ser algo así como un sleep.

modifiqué un poco el código para que sea más legible y puedas ver como modificando row y column cambiar la posición de los objetos, espero se entienda.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#-*- coding: utf -8 -*-
from tkinter import *
 
proceso=0
variable = True
 
def iniciar(h=0, m=0, s=0):
    global proceso
    #Verificamos si los segundos y los minutos son mayores a 60
    #Verificamos si las horas son mayores a 24
    if s >= 60:
        s=0
        m=m+1
        if m >= 60:
            m=0
            h=h+1
            if h >= 24:
                h=0
 
    #etiqueta que muestra el cronometro en pantalla
 
    time['text'] = (f"{h:02d}:{m:02d}:{s:02d}")
    time2['text'] = (f"{h:02d}:{m:02d}:{s:02d}")
    time3['text'] = (f"{h:02d}:{m:02d}:{s:02d}")
    time4['text'] = (f"{h:02d}:{m:02d}:{s:02d}")
 
    # iniciamos la cuenta progresiva de los segundos
    proceso=time.after(1000, iniciar, (h), (m), (s+1))
 
def parar():
    global proceso
    time.after_cancel(proceso)
 
root = Tk()
root.title('Cronometro')
contenedor = Frame(root)
frame=Frame(root)
 
time = Label(contenedor, text="00:00:00")
time.config(fg='red', font=("","48"))
time2 = Label(contenedor, text="00:00:00")
time2.config(fg='red', font=("","48"))
time3 = Label(contenedor, text="00:00:00")
time3.config(fg='red', font=("","48"))
time4 = Label(contenedor, text="00:00:00")
time4.config(fg='red', font=("","48"))
 
btnIniciar=Button(frame, fg='blue', text='Iniciar', command=iniciar)
btnParar=Button(frame, fg='blue', text='Parar', command=parar)
 
time.grid(row=0,column=0)
time2.grid(row=1,column=0)
time3.grid(row=2,column=0)
time4.grid(row=3,column=0)
 
btnIniciar.grid(row=0,column=0)
btnParar.grid(row=0,column=1)
 
contenedor.grid(row=0,column=0)
frame.grid(row=1,column=0)
root.mainloop()

para mí hay muchos errores, u omisiones, pero para estar iniciando está bien, aunque creo haber visto este código antes.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar