Seite 1 von 1

Timer Ausblenden nach Ablauf und Positionierung

Verfasst: Sa Okt 25, 2025 1:18 pm
von dedennig
Hallo
ich habe zwei Anliegen zum Timer:
Einmal würde ich es begrüßen, wenn es beim Erstellen auch einen Haken gäbe, diesen nach Ablauf automatisch auszublenden (oder alternatv die Schriftart auf Transparent zu stellen), damit dieser nicht bei 0:00 stehen bleibt.
Wir nutzen diesen üblicherweise um ihn per Mix Object über ein PDF zu legen, bei dem unsere Infos durchlaufen. Das machen wir über einen 2. PC, den wir dann im Stream und der Übertragung zeigen.
Gelegentlich kommt es vor, dass wir nicht ganz pünktlich starten und dann wäre es schön, wenn dieser dann nicht stehen bleibt, sondern die Infos dann einfach ohne eingeblendete Zeit weiterlaufen. Andererseits lassen wir die Infos auch nach dem Gottesdienst durchlaufen und dann kam es schon vor, dass die Infos auf dem 2. PC durchgängig weiterlaufen und am Ende immer noch die Zeit mit 0:00 eingeblendet ist.

Das 2. Anliegen bezieht sich auf die Positionnierung des Countdowns per X/Y Koordinate.
Mit der X Koordinate auf 100% kann ich diesen komplett an den Rand des Bildschirms nach rechts schieben, während ich mit der Y Koordinate immer einen deutlichen Abstand zum Rand nach unten habe.
Ich vermute, dass es daher kommt, dass die Schriftarten theoretisch bei einem kleinen g oder p weiter nach unten reichen, als dies bei den Zahlen des Countdowns der Fall ist.
Könnte man das entweder allgemein ändern, dass Zahlen bei 100% ganz an den Rand nach unten gehen?
Alternativ würde es uns auch reichen dort Werte über 100% einzugeben?.

Wäre schön, wenn man da etwas machen könnte.

Ansonsten vielen Dank für eure Arbeit. Solche kleinen Funktionen, wie der Timer, helfen oft auch ohne große Vorbereitung Dinge schnell umzusetzen.

Viele Grüße
Simon

Re: Timer Ausblenden nach Ablauf und Positionierung

Verfasst: So Okt 26, 2025 2:55 pm
von Sebastian
Ich schau mal, wo der Abstand her kommt.

Re: Timer Ausblenden nach Ablauf und Positionierung

Verfasst: So Nov 02, 2025 4:07 pm
von RomanZ
Ich bin mit dem eingebauten Timer auch noch nicht wirklich glücklich geworden.
Ein passendes anderes Timer-Anzeige-Programm hab' ich auch nicht gefunden (obwohl das doch nicht so schwierig sein kann... :? ).

Deshalb' hab' ich dann Microsoft CoPilot nach einem Python-Script dafür gefragt (das man nun beliebig anpassen kann, wenn man ein bissl Python kann):

Code: Alles auswählen

import sys
import time
from PyQt5.QtWidgets import QApplication, QLabel, QWidget
from PyQt5.QtCore import Qt, QTimer
import win32con
import win32gui

COUNTDOWN_SECONDS = 300  # 5 minutes

class CountdownWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.start_time = time.time()
        self.setWindowFlags(Qt.FramelessWindowHint | Qt.Tool)
        self.setAttribute(Qt.WA_TranslucentBackground)
        self.setGeometry(1000, 50, 200, 80)

        self.label = QLabel(self)
        self.label.setAlignment(Qt.AlignCenter)
        self.label.setStyleSheet("color: red; font-size: 32px; font-weight: bold;")
        self.label.setGeometry(0, 0, 200, 80)

        self.timer = QTimer(self)
        self.timer.timeout.connect(self.update_time)
        self.timer.start(1000)
        self.update_time()

        QTimer.singleShot(100, self.force_topmost)

    def force_topmost(self):
        hwnd = int(self.winId())
        win32gui.SetWindowPos(
            hwnd,
            win32con.HWND_TOPMOST,
            0, 0, 0, 0,
            win32con.SWP_NOMOVE | win32con.SWP_NOSIZE | win32con.SWP_SHOWWINDOW
        )

    def update_time(self):
        self.force_topmost()
        remaining = COUNTDOWN_SECONDS - int(time.time() - self.start_time)
        if remaining >= 0:
            mins, secs = divmod(remaining, 60)
            self.label.setText(f"{mins:02}:{secs:02}")
        else:
            self.label.setText("Time's up!")
            self.timer.stop()

app = QApplication(sys.argv)
window = CountdownWindow()
window.show()
sys.exit(app.exec_())