Python - cuenta atrás

 
Vista:
sin imagen de perfil
Val: 5
Ha disminuido su posición en 18 puestos en Python (en relación al último mes)
Gráfica de Python

cuenta atrás

Publicado por Raúl (2 intervenciones) el 03/01/2019 20:00:51
Hola a todos.
Estoy haciendo un pequeño programa para jugar con mi hijo a preguntas y respuestas,.
El caso es que no se como hacer que junto a la pregunta salte la cuenta atrás.
Como se ve en la imagen la cuenta atrás empieza y hasta que no acaba no se pone la pregunta.
Me gustaría que las dos cosas salieran a la vez, que junto a la pregunta la cuenta atrás empezara a funcionar.
Un saludo y gracias
Captura
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: 13
Ha disminuido su posición en 9 puestos en Python (en relación al último mes)
Gráfica de Python

cuenta atrás

Publicado por Ishtarah (5 intervenciones) el 03/01/2019 21:43:24
No entiendo mucho de Python (estoy aprendiendo) pero creo que tendrías que poner la pregunta antes del if, de forma que cuando la cuenta atrás llegue a 0, se acabe el tiempo pàra responder y suene "explosion.mp3".
Incluso quizás seria mejor definir una funcion solamente para la cuenta atrás y asi usarla con todas las preguntas.

Voy a mirar por internet y en algunos libros que tengo a ver si puedo ayudarte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha disminuido su posición en 18 puestos en Python (en relación al último mes)
Gráfica de Python

cuenta atrás

Publicado por Raúl (2 intervenciones) el 03/01/2019 22:02:21
Gracias ishtarah. Lo comprobaré y veré si da resultado. Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
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

cuenta atrás

Publicado por tincopasan (1082 intervenciones) el 04/01/2019 04:25:02
no es facil de implementar en el modo consola, te recomendaría que uses algo simple como tkinter, te paso un ejemplo muy entendible:
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
import tkinter as tk
from pygame import mixer
mixer.init()
class App(tk.Tk):
    def __init__(self):
        super().__init__()
        self.geometry("500x300")
        self.title("Preguntas")
        self.respuesta = tk.Entry(self)
        self.respuesta.place(x=100, y=40)
        self.pregunta=tk.Label(self,text="¿Cuál es la capital de Brasil?")
        self.pregunta.place(x=10,y=10)
        self.label=tk.Label(self,text="Responde:").place(x=20,y=40)
        self.tiempo=tk.Label(self,text="1")
        self.tiempo.place(x=300,y=10)
        self.controlar=tk.Button(self,text="Verificar",command=self.verificacion)
        self.controlar.place(x=60,y=90)
        self.remaining=0
        self.countdown(20)
 
    def countdown(self, remaining = None):
        if remaining is not None:
            self.remaining = remaining
 
        elif self.remaining == 100:
            return
        if self.remaining <= 0:
            self.tiempo.configure(text="Se agotó el tiempo")
            mixer.music.load("explosion.mp3")
            mixer.music.play()
        else:
            self.tiempo.configure(text="%d" % self.remaining)
            self.remaining = self.remaining - 1
            self.after(1000, self.countdown)
 
    def verificacion(self):
        self.ver=self.respuesta.get()
        if self.ver == "Brasilia":
            self.tiempo.configure(text="Excelente!!")
            self.remaining=100
 
 
 
if __name__ == "__main__":
    app = App()
    app.mainloop()

está más que claro que es solo para que veas como se puede hacer, pero hay que hacerle algunas reformas para mejorarlo, entre ellas
1)las preguntas y respuestas podrían estar en un archivo de texto por ejemplo y leerlas de formas aleatorias, eso evita modificar el código, solo el archivo de texto.
2)agregar un boton para siguiente pregunta o salir,etc.
3)si se pierde también mostrar la respuesta correcta, el objetivo es que aprenda
4)se puede agregar imagenes del país
5)también la opción de elegir una posible bandera
en fin hay muchas cosas que te toca implementar, pero como te dije, usa por lo menos tkinter para un mejor desarrollo, tambíen se puede en otros entornos, el propio pygame o pyqt(el más profesional) pero llevan más tiempo de aprendizaje y tkinter es muy básico y simple.Para tu proyecto no te recomiendo solo la consola, pero es cierto que es tu desición.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
Imágen de perfil de Jose Manuel
Val: 30
Ha aumentado su posición en 224 puestos en Python (en relación al último mes)
Gráfica de Python

cuenta atrás

Publicado por Jose Manuel (11 intervenciones) el 26/04/2020 22:02:00
Buenas tardes,
Estoy comenzando a practicar con el lenguaje de programación python y necesito implementar un temporizador de cuenta atrás en una interfaz gráfica, para simular la fecha de caducidad de una licencia.
Tengo el código desarrollado, pero me falta pulir un último detalle.
En la cuenta regresiva, los minutos y horas aparecen sumados como un total. El temporizador no contempla que el día tiene 24 horas y la hora tiene 60 minutos.
Adjunto código por si me pudieses echar una mano.
Gracias.

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
from tkinter import *
from tkinter import messagebox
 
root = Tk()
root.geometry("1200x400")
root.title("Timer")
 
seconds = 1300800
 
def timer():
    global seconds
    if seconds > 0:
        seconds = seconds -1
        mins = seconds // 60
        horas = seconds // 3600
        dias = seconds // 86400
 
 
        m = str(mins)
        h = str(horas)
        d = str(dias)
 
 
        if dias < 100:
            h = '0' + str(dias)
        elif dias < 10:
            h = '00' + str(dias)
            se = seconds - (dias * 86400)
 
 
        if horas > 24:
            h = str(horas)
        elif horas <= 24:
            h = str(horas)
        elif horas < 10:
            h = '0' + str(horas)
            se = seconds - (horas * 3600)
 
 
        if mins > 59:
            m = str(mins)
        elif mins <= 59:
            m = str(mins)
        elif mins < 10:
            m = '0' + str(mins)
        se = seconds - (mins * 60)
        s = str(se)
 
 
        if se < 10:
            s = '0' + str(se)
 
 
        time.set(d + ' dias ' + h + ' horas ' + m + ' minutos ' + s + ' segundos')
        timer_display.config(textvariable=time)
        root.after(1000, timer)
 
    elif seconds == 0:
        messagebox.showinfo('Message', 'Licencia caducada. Contacte con su proveedor.')
        root.quit()
 
 
frames = Frame(root, width=1000, height=1000)
frames.pack()
 
time = StringVar()
timer_display = Label(root, font=('Trebuchet MS', 30, 'bold'))
timer_display.place(x=20, y=20)
timer()
 
root.mainloop()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar