comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[SOLUCIONADO] Haciendo un contador en formato hora

  • 3 Respuestas
  • 1380 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado fortil

  • *
  • Underc0der
  • Mensajes: 175
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« en: Agosto 13, 2013, 02:59:54 pm »
Hola a todos(as)

Resulta que estoy tratando de hacer un contador que se muestre en formato hora, mi idea es no hacerlo tan complicado, pero como estoy trabajando en PyQT4 no sé si sea eso o porque se me han olvidado los bucles mas sencillos.

en fin

este es el código del programa.

Código: Python
  1. #!/usr/bin/python
  2. #-- coding: utf-8 --
  3.  
  4. import sys
  5. from PyQt4 import QtGui, QtCore
  6.  
  7. class Example(QtGui.QWidget):
  8.  
  9.         def __init__(self):
  10.                 super(Example, self).__init__()
  11.                 self.initUI()
  12.  
  13.         def initUI(self):
  14.  
  15.                 self.lcd = QtGui.QLCDNumber(self)
  16.                 self.lcd.setGeometry(30, 40, 200, 25)
  17.  
  18.                 self.btn = QtGui.QPushButton('Start', self)
  19.                 self.btn.move(40, 80)
  20.                 self.btn.clicked.connect(self.doAction)
  21.  
  22.                 self.timer = QtCore.QBasicTimer()
  23.                 self.step = 0
  24.  
  25.                 self.setGeometry(300, 300, 280, 170)
  26.                 self.setWindowTitle('QtGui.QLCDNumber')
  27.                 self.show()
  28.  
  29.         def timerEvent(self, e):
  30.  
  31.                 h = 0
  32.                 m = 0
  33.                
  34.                 if self.step < 100:
  35.                         if self.step < 60:
  36.                                 self.step = self.step + 1
  37.                                 self.lcd.display("%d:%d:%d" % (h,m,self.step))
  38.                         if self.step >= 60:
  39.                                 m += 1
  40.                                 self.step = 0
  41.                                 self.lcd.display("%d:%d:%d" % (h,m,self.step))
  42.                         if m >= 60:
  43.                                 h += 1
  44.                                 m = 0
  45.                                 self.lcd.display("%d:%d:%d" % (h,m,self.step))
  46.  
  47.         def doAction(self):
  48.  
  49.                 if self.timer.isActive():
  50.                         self.timer.stop()
  51.                         self.btn.setText('Start')
  52.                 else:
  53.                         self.timer.start(10, self)
  54.                         self.btn.setText('Stop')
  55.  
  56. def main():
  57.  
  58.         app = QtGui.QApplication(sys.argv)
  59.         ex = Example()
  60.         sys.exit(app.exec_())
  61.  
  62. if __name__ == '__main__':
  63.         main()
  64.  

En realidad lo que he tratado de modificar por todos lados es esta pequeña pero tediosa parte
Código: Python
  1. def timerEvent(self, e):
  2.  
  3.                 h = 0
  4.                 m = 0
  5.                
  6.                 if self.step < 100:
  7.                         if self.step < 60:
  8.                                 self.step = self.step + 1
  9.                                 self.lcd.display("%d:%d:%d" % (h,m,self.step))
  10.                         if self.step >= 60:
  11.                                 m += 1
  12.                                 self.step = 0
  13.                                 self.lcd.display("%d:%d:%d" % (h,m,self.step))
  14.                         if m >= 60:
  15.                                 h += 1
  16.                                 m = 0
  17.                                 self.lcd.display("%d:%d:%d" % (h,m,self.step))
  18.  

Ya que el contador comienza y cuando está en minuto 1, vuelve y se pone a 0, así esté bien el segundero

gracias
« Última modificación: Mayo 03, 2014, 11:44:40 am por Flemon »

Desconectado WhiZ

  • *
  • Underc0der
  • Mensajes: 395
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #1 en: Agosto 13, 2013, 03:45:01 pm »
Hola! Acá te dejo el code funcionando. Le podrías agregar una opción para reiniciar el conteo si se desea ;).

Código: Python
  1. #!/usr/bin/python
  2. #-- coding: utf-8 --
  3.  
  4. import sys
  5. from PyQt4 import QtGui, QtCore
  6.  
  7. class Example(QtGui.QWidget):
  8.  
  9.     def __init__(self):
  10.         super(Example, self).__init__()
  11.         self.initUI()
  12.  
  13.     def initUI(self):
  14.  
  15.         self.lcd = QtGui.QLCDNumber(self)
  16.         self.lcd.setGeometry(30, 40, 200, 25)
  17.  
  18.         self.btn = QtGui.QPushButton('Start', self)
  19.         self.btn.move(40, 80)
  20.         self.btn.clicked.connect(self.doAction)
  21.  
  22.         self.timer = QtCore.QBasicTimer()
  23.         self.step = 0
  24.         self.s = 0
  25.         self.h = 0
  26.         self.m = 0
  27.  
  28.         self.setGeometry(300, 300, 280, 170)
  29.         self.setWindowTitle('QtGui.QLCDNumber')
  30.         self.show()
  31.  
  32.     def timerEvent(self, e):
  33.                
  34.         if self.step >= 100:
  35.             self.step = 0
  36.             if self.s < 60:
  37.                 self.s += 1
  38.                 self.lcd.display("%d:%d:%d" % (self.h,self.m,self.s))
  39.             else:
  40.                 self.s = 0
  41.                 if self.m < 60:
  42.                     self.m += 1
  43.                     self.lcd.display("%d:%d:%d" % (self.h,self.m,self.s))
  44.                 else:
  45.                     self.m = 0
  46.                     self.h += 1
  47.                     self.lcd.display("%d:%d:%d" % (self.h,self.m,self.s))
  48.         else:
  49.             self.step += 1
  50.  
  51.     def doAction(self):
  52.  
  53.         if self.timer.isActive():
  54.             self.timer.stop()
  55.             self.btn.setText('Start')
  56.         else:
  57.             self.timer.start(10, self)
  58.             self.btn.setText('Stop')
  59.  
  60. def main():
  61.  
  62.     app = QtGui.QApplication(sys.argv)
  63.     ex = Example()
  64.     sys.exit(app.exec_())
  65.  
  66. if __name__ == '__main__':
  67.         main()
  68.  

Fijate que en tu code confundiste el step con el segundo, el segundo con el minuto y el minuto con la hora.
Además creaste las variables h y m dentro del método que ataja al evento, por lo que cada vez que aumentaba el valor de step, a h y m se les asignaba el valor 0.

Saludos!
WhiZ

EDITO: Ah! otra cosa. Como dijiste que lo querías en formato hora, el contador no tiene límite para la misma, es decir, no está configurado para reiniciar la variable hora cuando su valor supera los 24. Supuse que así lo querías, pero si lo querés cambiar sólo tenés que hacer lo mismo que veníamos haciendo para las centésimas, los segundos y los minutos.
« Última modificación: Agosto 13, 2013, 03:49:44 pm por WhiZ »


Desconectado fortil

  • *
  • Underc0der
  • Mensajes: 175
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #2 en: Agosto 13, 2013, 03:58:32 pm »
gracias amigo


Si yo creo que el problema era definir las variables dentro del mismo método, algo me sospechaba


muchas gracias

Desconectado WhiZ

  • *
  • Underc0der
  • Mensajes: 395
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #3 en: Agosto 13, 2013, 04:03:00 pm »
jeje me cope y le agregué algunas cosas :)

Código: Python
  1. #!/usr/bin/python
  2. #-- coding: utf-8 --
  3.  
  4. import sys
  5. from PyQt4 import QtGui, QtCore
  6.  
  7. class Example(QtGui.QWidget):
  8.  
  9.     def __init__(self):
  10.         super(Example, self).__init__()
  11.         self.initUI()
  12.  
  13.     def initUI(self):
  14.  
  15.         self.lcd = QtGui.QLCDNumber(self)
  16.         self.lcd.setGeometry(30, 40, 200, 25)
  17.         self.lcd.display('0:0:0')
  18.  
  19.         self.btnIniciar = QtGui.QPushButton('Start', self)
  20.         self.btnIniciar.move(28, 80)
  21.         self.btnIniciar.clicked.connect(self.doAction)
  22.  
  23.         self.btnReiniciar = QtGui.QPushButton('Restart', self)
  24.         self.btnReiniciar.move(145, 80)
  25.         self.btnReiniciar.clicked.connect(self.restart)
  26.  
  27.         self.timer = QtCore.QBasicTimer()
  28.         self.c = 0  # centésima
  29.         self.s = 0  # segundo
  30.         self.h = 0  # minuto
  31.         self.m = 0  # hora
  32.  
  33.         self.setGeometry(550, 350, 260, 150)
  34.         self.setWindowTitle('QtGui.QLCDNumber')
  35.         self.show()
  36.  
  37.     def timerEvent(self, e):
  38.                
  39.         if self.c >= 100:
  40.             self.c = 0
  41.             if self.s < 60:
  42.                 self.s += 1
  43.                 self.lcd.display("%d:%d:%d" % (self.h,self.m,self.s))
  44.             else:
  45.                 self.s = 0
  46.                 if self.m < 60:
  47.                     self.m += 1
  48.                     self.lcd.display("%d:%d:%d" % (self.h,self.m,self.s))
  49.                 else:
  50.                     self.m = 0
  51.                     self.h += 1
  52.                     self.lcd.display("%d:%d:%d" % (self.h,self.m,self.s))
  53.         else:
  54.             self.c += 1
  55.  
  56.     def doAction(self):
  57.  
  58.         if self.timer.isActive():
  59.             self.timer.stop()
  60.             self.btnIniciar.setText('Start')
  61.         else:
  62.             self.timer.start(10, self)
  63.             self.btnIniciar.setText('Stop')
  64.            
  65.     def restart(self):
  66.         self.c = 0
  67.         self.s = 0
  68.         self.m = 0
  69.         self.h = 0
  70.         self.lcd.display("%d:%d:%d" % (self.h,self.m,self.s))
  71.  
  72. def main():
  73.  
  74.     app = QtGui.QApplication(sys.argv)
  75.     ex = Example()
  76.     sys.exit(app.exec_())
  77.  
  78. if __name__ == '__main__':
  79.         main()

Saludos!
WhiZ


 

¿Te gustó el post? COMPARTILO!



[SOLUCIONADO] ¿Kali Linux o Kali Linux Ligth ?

Iniciado por worq

Respuestas: 2
Vistas: 6205
Último mensaje Noviembre 21, 2017, 12:28:54 pm
por Codig0Bit
[SOLUCIONADO] Multiuploader de imagenes con mysql, hosting de imagenes con mysql

Iniciado por graphixx

Respuestas: 4
Vistas: 2123
Último mensaje Marzo 26, 2013, 05:42:58 pm
por Xt3mP
[SOLUCIONADO] ¿Como publicar un software como software libre?

Iniciado por FuriosoJack

Respuestas: 2
Vistas: 1529
Último mensaje Mayo 23, 2017, 07:24:22 am
por HATI
[SOLUCIONADO] Linux Mint, errores, errores y mas errores...

Iniciado por n1sendev

Respuestas: 12
Vistas: 2663
Último mensaje Noviembre 22, 2017, 06:50:55 am
por RuidosoBSD
[SOLUCIONADO] Ayuda urgente con Virus "Virus.Win32Sality"

Iniciado por Napsters

Respuestas: 6
Vistas: 3339
Último mensaje Junio 11, 2012, 03:38:18 am
por Satyricon