Meine Kernfrage ist:
Wie kann ich eine Animation von einem Pushbutton über einen Thread starten?
Mein Endziel ist es. dass z.b. jeden Tag um 12:00Uhr dieser Butten(Mittag) mit Blinken anfängt. Sobald ein Button angeklickt wird, soll die Animation beendet werden.
Leider habe ich keine Plan wo ich anfangen soll. Die Animation über einen anderen Button konnte ich im Netz finden.
Ich stelle mir das so vor: Thread schaut ob es 12:00 Uhr ist. Dieser startet dann das Blinke. Das Blinken wird erste beendet nach einem Click auf einen Button oder nach 10min.
Mit einem normalen Blinken konnte ich schon lösen, jedoch möchte ich es animiert haben und wenn möglich mit Qt.
Code: Alles auswählen
class WindowProjektEintragen(QWidget):
ADDDELTATIME_AB_ALARLTIME = datetime.timedelta(hours=0, minutes=10).total_seconds() # Dauer des blinken.
STATUS_BLINKI = True
def __init__(self, *args, **kwargs):
super(WindowProjektEintragen, self).__init__(*args, **kwargs)
# create schedule
self.stopBlinking = threading.Event()
self.quitThread = threading.Event()
schedule_thread = threading.Thread(name='Scheduling-Thread', target=self.run_schedule_thread)
schedule_thread.start()
def run_schedule_thread(self):
""" run in a separate thread. """
start_blinkten = settings.getStrValue('START_BLINKZEIT') # z.b. START_BLINKZEIT = 12:00 aus der settings.ini Datei
schedule.every().day.at(start_blinkten).do(self.popupmeldung_mittag)
while not self.quitThread.isSet():
schedule.run_pending()
time.sleep(2)
def popupmeldung_mittag(self):
color_button = self.palette().color(QPalette.Midlight).getRgb()
color_highlight = self.palette().color(QPalette.Highlight).getRgb()
end_time = (time.time() + self.ADDDELTATIME_AB_ALARLTIME)
while (time.time() < end_time and self.get_status_blinki()) and not self.quitThread.isSet():
time.sleep(0.5)
self.b_Mittag.setStyleSheet("background-color: rgb({0}, {1}, {2});".format(color_highlight[0], color_highlight[1], color_highlight[2]))
time.sleep(0.5)
self.b_Mittag.setStyleSheet("background-color: rgb({0}, {1}, {2});".format(color_button[0], color_button[1], color_button[2]))
self.stopBlinking.clear()
def get_status_blinki(self):
return self.STATUS_BLINKI