Wussten Sie, dass Sie Ihre Tippgeschwindigkeit mit Python testen können? Ein Tippgeschwindigkeitstester ist eine unterhaltsame Methode, um zu testen, wie schnell jemand tippen kann. Es kann verwendet werden, um eine spielerische Benutzeroberfläche zu entwerfen, mit der Menschen jeden Alters herausfinden können, wie schnell sie tippen können, oder es kann in einer Bildungsumgebung verwendet werden, in der die Tippgeschwindigkeit für den Erfolg eines Schülers von entscheidender Bedeutung ist. In diesem Blogbeitrag behandeln wir die Schritte zum Erstellen eines Tippgeschwindigkeitstesters, um die Tippgeschwindigkeit eines einzelnen Benutzers zu ermitteln. Wir werden Tkinter verwenden, um eine grafische Oberfläche für die App zu erstellen.

Voraussetzungen

Tkinter:

Tkinter ist die standardmäßig eingebaute Python-Bibliothek zum Erstellen grafischer Benutzeroberflächen (GUIs). Es ist nicht wirklich ein separates „Ding“ – es ist nur der Teil der Standardbibliothek, der für das Zeichnen von Grafiken, das Akzeptieren von Benutzereingaben usw. verantwortlich ist. Tkinter ist so konzipiert, dass es einfach zu bedienen ist, und daher ist es eine gute Bibliothek für Anfänger, die gerade erst anfangen aus mit Python oder GUI-Entwicklung.

Random:

Das zufällige Python-Modul ist ein eingebautes Modul von Python, das zum Herumbasteln und Generieren unvorhersehbarer Zahlen verwendet werden kann. Das Modul kann auch verwendet werden, um eine Vielzahl von Tricks auszuführen, z. B. das Generieren unerwarteter Zahlen für Listen oder Zeichenfolgen usw. Wir verwenden dies, damit jedes Mal, wenn jemand die App zurücksetzt, ein anderer Satz angezeigt wird.

Threading:

Dieses Paket wird verwendet, um multiples Threading in das Programm einzuführen. Wenn ein Programm ausgeführt wird, wird es als Prozess betrachtet und innerhalb eines Prozesses gibt es einen Thread. Wenn ein Programm synchron ausgeführt wird, erstellt es einen Prozess, unter dem es einen Thread gibt. Aber wenn es ein asynchrones Programm gibt, gibt es einen Prozess, aber mehr als einen Thread.

In diesem Lernprogramm verwenden wir beispielsweise ein Threading-Modul, um zwei Aufgaben gleichzeitig auszuführen. Aufgabe eins besteht darin, die Eingaben eines Benutzers zu registrieren, und Aufgabe zwei besteht darin, zu verfolgen, wie viel Zeit verstrichen ist, während der Benutzer tippt. Wir können das tun, indem wir mit dem Modul mehrere Threads erstellen.

Schritt 1: Erstellen Sie eine Textdatei

Erstellen Sie eine text.txt-Datei und speichern Sie eine zufällige Satzzeile, die Sie auf dem Schreibtester anzeigen möchten.

Hello, how are you, I guess you are fine hmm. please don't forget to share your thoughts. Share this article with your friends. Hello, the world this text is a pretty useful program. python is an awesome programming language.

Schritt 2: Erstellen Sie eine neue .py-Datei

Folgen Sie nun dem Code

Schritt 3: Abhängigkeiten importieren

Lassen Sie uns zunächst die Abhängigkeiten importieren

import tkinter as tk
import time
import threading
import random

Schritt 4: Definieren Sie die grafische Oberfläche des Testers

Die eigentliche grafische Oberfläche wird Teil einer Klasse sein, denn wenn Sie eine grafische Benutzeroberfläche mit Funktionen und UI-Elementen haben, die auf diese Funktionen und UI-Elemente zugreifen, möchten Sie, dass dies in einem Objekt ist, sonst werden Sie verwirrt sein, welches erstmal zu definieren.

Hier in der Anwendung wollen wir vier Dinge haben

  1. Beschriften Sie, wo der Satz vom Benutzer angezeigt wird
  2. Ein Textfeld zur Eingabe durch den Benutzer
  3. Timer zur Anzeige von CPS (Zeichen pro Sekunde), CPM (Zeichen pro Minute), WPS (Wort pro Sekunde) und WPM (Wort pro Minute)
  4. Und zuletzt möchten wir einen Reset-Button haben, der die Anwendung zurücksetzt und die verschiedenen Sätze anzeigt, die eingegeben werden müssen.
# create a class for ul elements
class TypeSpeedGUI:

    # create a simple constructor
    def __init__(self):
        self.root = tk.Tk()
        self.root.title("Typing speed tester")
        self.root.geometry("800x600")

        self.text = open("text.txt", "r").read().split("\n")

        self.frame = tk.Frame(self.root)

        # creating a lable
        self.sample_label = tk.Label(self.frame, text=random.choice(self.text), font=("Helventica", 18))
        self.sample_label.grid(row=0, column=0, columnspan=2, padx=5, pady=5)

        # creating a text box
        self.input_entry = tk.Entry(self.frame, width=40, font=("Helventica", 24))
        self.input_entry.grid(row=1, column=0, columnspan=2, padx=5, pady=10)
        # adding the function to start automatically if the key is pressed
        self.input_entry.bind("<KeyPress>", self.start)

        # creating a label for the timer
        self.speed_label = tk.Label(self.frame, text="Speed: \n0.00 CPS\n0.00 CPM\n0.00 WPS\n0.00 WPS", font=("Helventica", 18))
        self.speed_label.grid(row=2, column=0, columnspan=2, padx=5, pady=10)

        # creating a reset button
        self.reset_button = tk.Button(self.frame, text="Reset", command=self.reset, font=("Helventica", 24))
        self.reset_button.grid(row=3, column=0, columnspan=2, padx=5, pady=10)

        self.frame.pack(expand=True)


        # adding the boolean to know that the app is started or not
        self.counter = 0
        self.running = False

        self.root.mainloop()

Schritt 5: Definieren Sie die Startfunktion

Wir haben bereits im obigen Abschnitt definiert, dass der Timer startet, wenn der Benutzer die Taste drückt, aber wir wollen ihn nicht starten, wenn wir die Umschalttaste oder die Strg-Taste oder eine andere Zusatztaste drücken. Also fügen wir diese Funktion mit der if-Anweisung hinzu, und wir müssen auch die if-Anweisung für die Eingabe einer falschen Eingabe festlegen, denn wenn der Benutzer die Taste drücken kann, ergibt dies keinen Sinn.

Definieren Sie die Farbe des Textes:

  1. Wenn der Benutzer das falsche Wort eingibt, wird die Farbe des Textes in rote Farbe umgewandelt
  2. Wenn der Benutzer das richtige Wort eingibt, bleibt die Farbe des Textes schwarz
  3. Und wenn der Benutzer den Satz ohne Fehler vervollständigt hat, ändert sich die Farbe des Textes in grün.
def start(self ,event):
        if not self.running:
            if not event.keycode in [16, 17, 18]:
                self.running = True
                t = threading.Thread(target=self.time_thread)
                t.start()
        if not self.sample_label.cget('text').startswith(self.input_entry.get()):
            self.input_entry.config(fg="red")
        else:
            self.input_entry.config(fg="black")
        if self.input_entry.get() == self.sample_label.cget('text')[:-1]:
            self.running = False
            self.input_entry.config(fg="green")

Schritt 6: Definieren Sie die Zeitfunktion in einem anderen Thread

Dieser Abschnitt des Codes ist ziemlich einfach, hier haben wir eine Funktion erstellt, um die Zeit in CPS (Zeichen pro Sekunde), CPM (Zeichen pro Minute), WPS (Wort pro Sekunde) und WPM (Wort pro Minute) anzuzeigen.

def time_thread(self):
        while self.running:
            time.sleep(0.1)
            self.counter += 0.1
            cps = len(self.input_entry.get()) / self.counter
            cpm = cps * 60
            wps = len(self.input_entry.get().split(" ")) / self.counter
            wpm = wps * 60
            self.speed_label.config(text=f"Speed: \n{cps:.2f} CPS\n{cpm:.2f} CPM\n{wps:.2f} WPS\n{wpm:.2f} WPM")

Schritt 7: Definieren Sie die Reset-Funktion

def reset(self):
        self.running = False
        self.counter = 0
        self.speed_label.config(text="Speed: \n0.00 CPS\n0.00 CPM\n0.00 WPS\n0.00 WPM")
        self.sample_label.config(text=random.choice(self.text))
        self.input_entry.delete(0, tk.END)

Ausgabe:

Wie Sie in der Ausgabe sehen können, funktioniert dieses Programm einwandfrei.

Letzte Worte

Nun, so können Sie Ihre Tippgeschwindigkeit mit Python testen. Dieser Tippgeschwindigkeitstester ist ein Beispiel dafür, wie Sie die Kraft der Programmierung nutzen können, um etwas zu erstellen, das Spaß macht und interaktiv ist. Wir haben dies mit Python erstellt, das mit der Python-Tkinter-Bibliothek implementiert ist und leicht angepasst werden kann. Wir hoffen, dass Ihnen dieser schnelle und einfache Tippgeschwindigkeitstest gefallen hat! Wenn Sie Fragen zu diesem Tippgeschwindigkeitstest oder zum Programmieren im Allgemeinen haben, kontaktieren Sie uns bitte.

Hier sind einige nützliche Tutorials, die Sie lesen können:

Hier sind einige nützliche Tutorials, die Sie lesen können: