Fullscreen – Stopwatch

Bij de liefhebbers van escaperooms leeft de wens om meer spanning in de 'ontsnapping' aan te brengen. Daarom laat ik deze keer zien hoe je een stopwatch maakt met behulp van de combinatie Python en Tkinter. De stopwatch is schermvullend bij een 1920 x 1080 scherm (FullHD 16:9). Mocht je scherm een ander formaat hebben, dan kun je het script zelf aanpassen.

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 ​​timer in Python te maken importeren we eerst het Tkinter-pakket. Om system-specifieke parameters en functies te kunnen gebruiken importeren we sys en de time-module om een ​​tijd te verkrijgen. De telling declareren we als globaal en zetten de variabele op nul.

from tkinter import *
import sys
import time

global count
count = 0

Stap 2. Stopwatchklasse

We maken een klasse (class) genaamd stopwatch. In deze klasse maken we een functie om een ​​reset-actie uit te kunnen voeren. Deze functie reset de timing naar 00:00:00, vergelijkbaar met het herstarten van de stopwatch.

class stopwatch():
    def reset(self):
        global count
        count=1
        self.t.set('00:00:00')  # stand na reset   

Stap 3. Startmethode voor stopwatch met behulp van Python

Om de stopwatch te starten wordt een functie met de naam start gemaakt. Deze functie wordt gebruikt voor het starten van de stopwatch.

def start(self):
        global count
        count=0
        self.timer()

Stap 4. Stopmethode

Om de stopwatch te stoppen hebben we een stop-functie nodig. We maken een functie die wordt aangeroepen om te stoppen.

def stop(self):
        global count
        count=1

Stap 5. Methode sluiten

Het is handig om bij schermtoepassingen altijd een exit-knop toe te voegen. Om de exit-procedure uit te voeren maken we een functie genaamd ‘close‘. Wanneer we in de toepassing op de exit-knop klikken wordt de toepassing afgesloten.

def close(self):
        self.root.destroy()

Stap 6. Maak de timermethode aan

Om de stopwatch te laten lopen maken we een functie met de naam timer aan. Wanneer het programma de functie self.timer() ziet, roept het deze functie aan en voert het de taak uit die is gespecificeerd in de timerfunctie.

def timer(self):
        global count
        if(count==0):
            self.d = str(self.t.get())
            h,m,s = map(int,self.d.split(":")) 
            h = int(h)
            m=int(m)
            s= int(s)
            if(s<59):
                s+=1
            elif(s==59):
                s=0
                if(m<59):
                    m+=1
                elif(m==59):
                    m=0
                    h+=1
            if(h<10):
                h = str(0)+str(h)
            else:
                h= str(h)
            if(m<10):
                m = str(0)+str(m)
            else:
                m = str(m)
            if(s<10):
                s=str(0)+str(s)
            else:
                s=str(s)
            self.d=h+":"+m+":"+s           
            self.t.set(self.d)
            if(count==0):
                self.root.after(1000,self.timer)     

Stap 7. De init-methode voor Stopwatch maken met behulp van Python

We voegen een init-functie toe aan dit programma, evenals een knop voor elke bewerking. Feitelijk zijn dit de Tkinter-functies om de toepassing mooi op het scherm te tonen. Om het schermformaat, de opmaak, het font en de kleuren van de stopwatch aan te passen, kun je de instellingen hieronder veranderen.

def __init__(self):
        self.root=Tk()
        self.root.title("Stopwatch - Powered bij Raspberry Pi - Adapted by Picademie.nl")
        self.root.attributes("-fullscreen", True)
        self.root.configure(background='black')
        self.root.geometry("600x200")
        self.t = StringVar()
        self.t.set("00:00:00")

        # Tekst en achtergrond kleuren
        # Klok
        self.lb = Label(self.root,textvariable=self.t,font=("Helvetica 250 bold"), foreground="red", bg="black", justify="center")

        # Knoppen
        self.bt1 = Button(self.root,text="Start",command=self.start,font=("Helvetica 20 bold"),bg=("white"))
        self.bt2 = Button(self.root,text="Stop",command=self.stop,font=("Helvetica 20 bold"),bg=("white"))
        self.bt3 = Button(self.root,text="Reset",command=self.reset,font=("Helvetica 20 bold"),bg=("white"))
        self.bt4 = Button(self.root, text="Exit", command=self.close,font=("Helvetica 20 bold"),bg=("white"))

        # Positie van klok en knoppen
        # Klok
        self.lb.place(x=300,y=375)

        # Knoppen
        self.bt1.place(x=620,y=800)
        self.bt2.place(x=820,y=800)
        self.bt3.place(x=1020,y=800)
        self.bt4.place(x=1220,y=800)

        self.root.mainloop()

a=stopwatch()

Stap 8. Bestand downloaden

Stap 9. Stopwatch 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 stopwatch.py

Have A Nice Day!

1 Reactie

  1. Dat ziet er leuk uit! Ik denk dat je heel veel escaperoom bouwers hier blij mee maakt en ondersteunt
    Raspberry PI wordt naast Arduino en mini plc’s veel toegepast in de escaperoom wereld.

Reacties zijn gesloten.