Stoppuhr mit Python und Tkinter

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Projekt werden wir eine einfache Stoppuhr-Anwendung mit Python und Tkinter erstellen. Die Stoppuhr wird die Funktionen Start, Stop, Reset und Beenden haben. Wir werden die Tkinter-Bibliothek für die grafischen Benutzeroberflächenkomponenten (GUI) und die Zeitbibliothek für zeitbezogene Operationen verwenden.

👀 Vorschau

Vorschau der Stoppuhr-GUI

🎯 Aufgaben

In diesem Projekt lernen Sie:

  • Wie Sie die erforderlichen Bibliotheken für GUI- und zeitbezogene Operationen importieren
  • Wie Sie eine Stoppuhr-Klasse definieren, die die Frame-Klasse erweitert
  • Wie Sie GUI-Komponenten für die Stoppuhr erstellen
  • Wie Sie die verstrichene Zeit aktualisieren und in der GUI anzeigen
  • Wie Sie die Funktionalität zum Starten, Stoppen und Zurücksetzen der Stoppuhr implementieren
  • Wie Sie eine Hauptfunktion erstellen, um das Stoppuhr-Objekt zu initialisieren und Buttons für die Interaktion hinzuzufügen

🏆 Errungenschaften

Nach Abschluss dieses Projekts werden Sie in der Lage sein:

  • Eine GUI-Anwendung mit Tkinter in Python zu erstellen
  • Mit zeitbezogenen Operationen in Python umzugehen
  • Die Funktionalität einer Stoppuhr zu implementieren

Erstellen der Projekt-Dateien

Erstellen Sie zunächst eine neue Datei mit dem Namen stopwatch.py und öffnen Sie sie in Ihrem bevorzugten Code-Editor.

cd ~/project
touch stopwatch.py
✨ Lösung prüfen und üben

Importieren der erforderlichen Bibliotheken

Öffnen Sie in der Datei stopwatch.py und beginnen Sie mit dem Importieren der erforderlichen Bibliotheken. Für die GUI-Komponenten benötigen wir Tkinter, für thematisierte Widgets ttk und für zeitbezogene Operationen time. Fügen Sie den folgenden Code am Anfang der Datei hinzu:

from tkinter import *
from tkinter import ttk
import time
✨ Lösung prüfen und üben

Definieren der StopWatch-Klasse

Als nächstes definieren Sie eine Klasse namens StopWatch, die die Frame-Klasse erweitert. Wir werden diese Klasse verwenden, um die Stoppuhr-Funktionalität zu erstellen. Fügen Sie den folgenden Code nach den Importanweisungen hinzu:

class StopWatch(Frame):
    def __init__(self, parent=None, **kw):
        Frame.__init__(self, parent, kw)
        self._start = 0.0
        self._elapsedtime = 0.0
        self._running = 0
        self.timestr = StringVar()

        self.makeWidgets()
✨ Lösung prüfen und üben

Erstellen der GUI-Komponenten

Innerhalb der StopWatch-Klasse fügen Sie eine Methode namens makeWidgets hinzu, die die GUI-Komponenten erstellt und positioniert. Diese Methode wird vom Konstruktor aufgerufen. Fügen Sie den folgenden Code innerhalb der StopWatch-Klasse hinzu:

    def makeWidgets(self):
        l = ttk.Label(self, textvariable=self.timestr)
        self._setTime(self._elapsedtime)
        l.pack(fill=X, expand=NO, pady=2, padx=2)
✨ Lösung prüfen und üben

Aktualisieren der verstrichenen Zeit

Fügen Sie innerhalb der StopWatch-Klasse eine Methode namens _update hinzu. Diese Methode wird die verstrichene Zeit berechnen und die GUI aktualisieren. Fügen Sie den folgenden Code innerhalb der StopWatch-Klasse hinzu:

    def _update(self):
        self._elapsedtime = time.time() - self._start
        self._setTime(self._elapsedtime)
        self._timer = self.after(50, self._update)
✨ Lösung prüfen und üben

Setzen der Zeit

Fügen Sie innerhalb der StopWatch-Klasse eine Methode namens _setTime hinzu. Diese Methode wird die Zeit formatieren und die Variable timestr aktualisieren. Fügen Sie den folgenden Code innerhalb der StopWatch-Klasse hinzu:

    def _setTime(self, elap):
        minutes = int(elap / 60)
        hours = int(minutes / 60)
        seconds = int(elap - minutes * 60.0)
        hseconds = int((elap - minutes * 60.0 - seconds) * 100)
        self.timestr.set('%02d:%02d:%02d:%02d' % (hours, minutes, seconds, hseconds))
✨ Lösung prüfen und üben

Implementieren der Startfunktionalität

Fügen Sie innerhalb der StopWatch-Klasse eine Methode namens Start hinzu. Diese Methode wird die Stoppuhr starten. Fügen Sie den folgenden Code innerhalb der StopWatch-Klasse hinzu:

    def Start(self):
        if not self._running:
            self._start = time.time() - self._elapsedtime
            self._update()
            self._running = 1
✨ Lösung prüfen und üben

Implementieren der Stoppfunktionalität

Fügen Sie innerhalb der StopWatch-Klasse eine Methode namens Stop hinzu. Diese Methode wird die Stoppuhr stoppen. Fügen Sie den folgenden Code innerhalb der StopWatch-Klasse hinzu:

    def Stop(self):
        if self._running:
            self.after_cancel(self._timer)
            self._elapsedtime = time.time() - self._start
            self._setTime(self._elapsedtime)
            self._running = 0
✨ Lösung prüfen und üben

Implementieren der Zurücksetzungsfunktionalität

Fügen Sie innerhalb der StopWatch-Klasse eine Methode namens Reset hinzu. Diese Methode wird die Stoppuhr zurücksetzen. Fügen Sie den folgenden Code innerhalb der StopWatch-Klasse hinzu:

    def Reset(self):
        self._start = time.time()
        self._elapsedtime = 0.0
        self._setTime(self._elapsedtime)
✨ Lösung prüfen und üben

Erstellen der Hauptfunktion

Fügen Sie eine main-Funktion außerhalb der StopWatch-Klasse hinzu. Diese Funktion wird das Hauptanwendungsprogrammfenster erstellen, das StopWatch-Objekt initialisieren und Buttons für Start, Stop, Zurücksetzen und Beenden hinzufügen. Fügen Sie den folgenden Code nach der StopWatch-Klasse hinzu:

def main():
    root = Tk()
    sw = StopWatch(root)
    sw.pack(side=TOP)

    Button(root, text='Start', command=sw.Start).pack(side=LEFT)
    Button(root, text='Stop', command=sw.Stop).pack(side=LEFT)
    Button(root, text='Reset', command=sw.Reset).pack(side=LEFT)
    Button(root, text='Quit', command=root.quit).pack(side=LEFT)

    root.mainloop()


if __name__ == '__main__':
    main()
✨ Lösung prüfen und üben

Führen Sie das Projekt aus

Schalten Sie schließlich auf den Desktop um und führen Sie das Projekt mit dem folgenden Befehl aus:

python stopwatch.py
stopwatch project execution
✨ Lösung prüfen und üben

Zusammenfassung

Herzlichen Glückwunsch! Sie haben erfolgreich eine Stoppuhr-Anwendung mit Python und Tkinter erstellt. Wir haben die Schritte zur Erstellung der Projektdateien, zum Importieren der erforderlichen Bibliotheken, zum Definieren der StopWatch-Klasse, zum Erstellen von GUI-Komponenten, zum Aktualisieren der verstrichenen Zeit, zur Implementierung der Start-, Stop- und Zurücksetzungsfunktionalität und zum Erstellen der Hauptanwendung durchlaufen. Sie können jetzt das Projekt ausführen und die Buttons verwenden, um die Stoppuhr zu steuern.