Skip to content

Instantly share code, notes, and snippets.

@horstjens
Created June 17, 2023 12:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save horstjens/1246081d2950355694ddbc57c454d97a to your computer and use it in GitHub Desktop.
Save horstjens/1246081d2950355694ddbc57c454d97a to your computer and use it in GitHub Desktop.
tipptrainer
import random
import time
import PySimpleGUI as sg
import datetime
#https://github.com/dwyl/english-words/tree/master
with open("german.txt") as myfile:
wörter = [wort.strip() for wort in myfile.readlines()]
#print(wörter)
name = ""
while len(name) < 2:
name = sg.PopupGetText("Wer bist denn Du?")
layout = [
[sg.Text("Zeichen pro Sekunde:"),
sg.Text("??", key="chars_per_second")],
[sg.Text("mein Wort:"), sg.Text("abc", key="text1",
font=("Arial", 24), size=(100,2))],
[sg.Text("du tippst:"),
sg.Multiline("abc",
key="text2",
font=("Arial", 48),
text_color="#0000FF",
enable_events=True,
enter_submits=True,
size=(100,2))],
[sg.Text("wie viele Wörter:"),
sg.Slider(range=(1,3), orientation="h",
key="slider1", default_value=4)],
[sg.Button("Clear", focus=False),
sg.Button("Generate", bind_return_key=True),
sg.Button("Exit")],
]
window = sg.Window("tipptrainer", layout, #return_keyboard_events=True,
size=(1700, 350))
text2 = ""
zeichen_pro_sekunde = []
startzeit = False
startposition = 0
geschafft = []
while True:
event, values = window.read()
if event in ("Exit", sg.WIN_CLOSED):
break
elif event == "Generate":
liste1 = []
geschafft = []
startposition = 0
for _ in range(int(values["slider1"])):
wort = random.choice(wörter)
liste1.append(wort)
text1 = " ".join(liste1)
window["text1"].update(text1)
window["text2"].update("")
text2 = ""
startzeit = time.time()
elif event == "Clear":
window["text2"].update("")
text2 = ""
elif event == "text2":
if startzeit:
print(liste1[0], window["text2"].get()[startposition:] )
if values["text2"][startposition:] == liste1[0]:
endzeit = time.time()
print("zeitdauer:", endzeit-startzeit)
x = datetime.datetime.today()
datum = "{}-{}-{}".format(
x.year, x.month, x.day)
zeit = "{}:{}:{}".format(x.hour, x.minute, x.second)
wort = liste1[0]
dauer = endzeit-startzeit
with open("statistik.csv", "a") as myfile:
myfile.write("{},{},{},{},{}\n".format(
name, datum, zeit, wort, dauer))
geschafft.append(liste1[0])
time_per_char = dauer / len(wort)
zeichen_pro_sekunde.insert(0, time_per_char)
window["chars_per_second"].update(str(time_per_char))
if len(liste1) > 1:
liste1 = liste1[1:] # erstes element löschen
startposition = len(" ".join(geschafft))+1
startzeit = time.time()
window.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment