Countdown immer größere Schritte
Verfasst: Sonntag 17. Mai 2020, 20:55
Hallo zusammen,
ich bastele im Moment an einem Countdown Programm. Die Zeitanzeige steuere ich mit ein Start-Button und einem Pause-Button der den Timer stoppt.
Das ganze funktioniert auf den ersten Blick auch. Allerdings wenn ich den Timer stoppe und wieder auf Start drücke zählt er dann 2 Sekunden pro "tick" runter. Und mit jedem mal Stopp&Start wird es eine Sekunde mehr. Also nach 9 mal stoppen und wieder starten gehen pro Sekunde 10 Sekunden von der Uhr weg.
Ich hoffe jemand kann mir hier weiterhelfen.
Vielen Dank im Voraus.
ich bastele im Moment an einem Countdown Programm. Die Zeitanzeige steuere ich mit ein Start-Button und einem Pause-Button der den Timer stoppt.
Das ganze funktioniert auf den ersten Blick auch. Allerdings wenn ich den Timer stoppe und wieder auf Start drücke zählt er dann 2 Sekunden pro "tick" runter. Und mit jedem mal Stopp&Start wird es eine Sekunde mehr. Also nach 9 mal stoppen und wieder starten gehen pro Sekunde 10 Sekunden von der Uhr weg.
Ich hoffe jemand kann mir hier weiterhelfen.
Vielen Dank im Voraus.
Code: Alles auswählen
from PyQt5 import QtWidgets, QtCore, QtGui
import StortiTimer
from datetime import time, timedelta, datetime
class ControlLCD(QtWidgets.QWidget):
def __init__(self, parent = None):
QtWidgets.QWidget.__init__(self, parent)
self.ui = StortiTimer.Ui_set_time()
self.ui.setupUi(self)
self.timer = QtCore.QTimer(self)
#working variables
self.job_time = None
self.first_time = None
self.timey = timedelta(seconds = 1)
self.ostime = datetime(year= 2030, month = 1, day=1, hour=0, minute=0, second=0)
#connect buttons to events
self.ui.start_button.clicked.connect(self.start_timer)
self.ui.kill_Button.clicked.connect(self.quit)
self.ui.pause_button.clicked.connect(self.pause)
self.ui.set_button.clicked.connect(self.set_time)
def updateLCD(self):
if self.first_time.hour != 0 or self.first_time.minute != 0 or self.first_time.second != 0:
self.first_time -= self.timey
printstring = f"{self.first_time.hour}:{self.first_time.minute}:{self.first_time.second}"
self.ui.remaining_time.setText(printstring)
self.timey = timedelta(seconds = 1)
else:
self.overshoot()
def overshoot(self):
self.ostime += self.timey
printos = f"{self.ostime.hour}:{self.ostime.minute}:{self.ostime.second}"
self.ui.extra_time.setText(printos)
def set_time(self):
''' Get the time from the time setting Window and paste it to the clock'''
self.job_time = self.ui.job_time.time()
print_init_time = self.job_time.toString("hh:mm:ss")
self.ui.remaining_time.setText(print_init_time)
self.first_time = datetime(year = 2030, month = 1, day = 1, hour= self.job_time.hour(), minute=self.job_time.minute(), second= self.job_time.second())
def start_timer(self):
self.timey = timedelta(seconds = 1)
self.timer.start(1000)
#set the timer event
self.timer.timeout.connect(self.updateLCD)
def pause(self):
self.timer.stop()
self.timey = timedelta(seconds = 1)
def quit(self):
sys.exit()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
c = ControlLCD()
c.show()
sys.exit(app.exec_())