Fullscreen – Aftellen datum/tijd

Als je het millennium moment, de overgang naar het jaar 2000, hebt meegemaakt weet je nog wel dat er overal aftelklokken te krijgen waren. Helaas werken die meeste klokken niet meer omdat ze aftelden naar het '1-1-2000'-moment. Wat was het spannend om naar het nieuwe millennium te gaan. De computersystemen zouden last hebben van de 'millenniumbug' omdat de computerklok het jaar 2000 niet zou herkennen. In veel gevallen was het loos alarm. Zo'n aftelklok kun je ook gebruiken voor andere momenten, zoals de verjaardag van je oma, je vakantie of misschien wel je pensioen.    

In deze tutorial laat ik ziet hoe je een schermvullende aftelklok maakt in Tkinter. Het moment waarnaar afgeteld wordt stel je zelf in. Je kunt het lettertype, de grootte en de kleur van de tekst naar keuze instellen. Als voorbeeld telt het script af naar het jaar 2030, het moment dat er geen nieuwe brandstof auto’s geproduceerd mogen worden.

We hebben Tkinter nodig!

Om de grafische output op een volledig scherm te tonen is Tkinter nodig. Deze bevindt zich standaard in de laatste versie van het Raspberry Pi OS. Je kunt dit controleren door in de desktop naar Voorkeuren te gaan en vervolgens naar Add / Remove Software. Type hier vervolgens ‘Tkinter‘ in. Als het goed is zie je een vinkje bij Tkinter staan.

Heb je een andere versie van het OS of zie je Tkinter er niet bij staan om aan te vinken, installeer dan Tkinter vanaf de prompt in de terminal met:

sudo apt-get install python-tk python3-tk

Om te zien of Tkinter goed geïnstalleerd is, gebruik je in Python het twee-regel script:

import tkinter

tkinter._test()

Als het goed geïnstalleerd is, zie je in de desktop van de Pi een venster verschijnen zoals hieronder.

Tkinter test

Laatste updates
Ik ga ervan uit dat je Raspberry Pi ‘schoon’ is en dat de pakketten van de laatste updates en upgrades voorzien zijn. Zo niet, voer dan de volgende opdrachten in de terminal in.

sudo apt-get update

sudo apt-get upgrade

Aan de slag!

Stap 1. Bibliotheken importeren en variabelen initialiseren

Om een ​​countdown timer in Python te maken importeren we eerst de specifieke onderdelen van het Tkinter-pakket. Om system-specifieke parameters en functies te kunnen gebruiken importeren we de time- en de datumtijdmodule om een ​​datum en tijd te verkrijgen. De eindtijd declareren we als globaal.

from tkinter import *
from tkinter import ttk
from tkinter import font
import time
import datetime

global endTime

Stap 2: Functie voor het stoppen van het Tkinter scherm

Om de Tkinter uitvoering te stoppen gebruiken we de destroy()-methode.

def quit(*args):
    root.destroy()

Stap 3: Functie voor de resterende tijd vaststellen

Hier wordt de overgebleven tijd gedefinieerd en getoond, de onrustige microsseconden verwijderd en een vertraging van 1 seconde ingebouwd voor het tonen van het aftellen.

def show_time():
    remainder = endTime - datetime.datetime.now()
    remainder = remainder - datetime.timedelta(microseconds=remainder.microseconds)
    txt.set(remainder)
    root.after(1000, show_time)

Stap 4: Tkinter opbouw

We gebruiken Tkinter om de klok fullscreen te tonen.

root = Tk()
root.attributes("-fullscreen", True)
root.configure(background='black')
root.bind("c", quit)  # Om het aftellen te stoppen (Control-c)
root.after(1000, show_time)

Stap 5: Eindtijd instellen

De einddatum en tijd worden ingesteld. In dit voorbeeld is dit 1-1-2030 om 00:00:00 uur.

endTime = datetime.datetime(2030, 1, 1, 0, 0, 0) # Jaar,Maand,Dag,Uur,Min,Sec

Stap 6: Tekstopmaak

Binnen de Tkinter instellingen stel we het lettertype vast, de achtergrond- en letterkleur en de positie van de tekst.

fnt = font.Font(family='Helvetica', size=60, weight='bold') 
txt = StringVar()
lbl = ttk.Label(root, textvariable=txt, font=fnt, foreground="#3366FF", background="black") 
lbl.place(relx=0.5, rely=0.5, anchor=CENTER)

Stap 7: De Tkinter mainloop

De root.mainloop() is een vast onderdeel van de Tkinter methode die we in het hoofdvenster moeten uitvoeren wanneer we onze applicatie willen kunnen starten. Deze methode loopt voor altijd door, wachtend op gebeurtenissen van de gebruiker, totdat de gebruiker het programma verlaat – hetzij door het venster te sluiten, hetzij door het programma te beëindigen met een toetsenbordonderbreking in de console.

root.mainloop()

Download script

Download hieronder het script.

Stap 9. Script opstarten

Omdat we gebruik maken van Tkinter heb je het grafische scherm van de Raspberry Pi nodig. Daarom start je het bestand in de terminal van de Raspberry Pi op, dus niet via SSH, met VNC lukt dit wel!

Wil je weten hoe je VNC installeert? Kijk dan hier.

Het script wordt opgestart met de opdracht:

python momentAftellen.py

Mocht je nog vragen en/of opmerkingen hebben, laat het dan hieronder weten.

Have A Nice Day!