Timer Ausblenden nach Ablauf und Positionierung

Hier könnt ihr Wünsche und Ideen posten
Antworten
dedennig
Beiträge: 48
Registriert: So Dez 21, 2008 10:59 pm
Wohnort: Remchingen

Timer Ausblenden nach Ablauf und Positionierung

Beitrag 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
Sebastian
SongBeamer Team
Beiträge: 6378
Registriert: Fr Nov 14, 2003 11:31 pm

Re: Timer Ausblenden nach Ablauf und Positionierung

Beitrag von Sebastian »

Ich schau mal, wo der Abstand her kommt.
Gruß, Sebastian
RomanZ
Beiträge: 44
Registriert: Mi Dez 13, 2023 9:14 pm
Wohnort: Oberndorf bei Salzburg

Re: Timer Ausblenden nach Ablauf und Positionierung

Beitrag 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_())
Antworten