Kurz zur Erläuterung:
Ich möchte ein kleines Vokabeltrainerprogramm mit Anmeldemaske erstellen.
Es ist nur für Hobbyzwecke. Anmeldename und Passwort sind hart kodiert. Ist für mich erstmal in Ordnung. Ist der nächste Punkt, aber darum geht es erstmal nicht.
Mit einer globalen Variable "richtig" funktioniert es, aber das möchte ich versuchen zu umgehen.
Ich übergebe die Variable "richtig" mit Hilfe von Lamda, im "command Teil" des Antwort Buttons.
Soweit so gut.
Nach dem Check, ob es stimmt, oder nicht, wird die Variable "richtig" neu gesetzt, damit ein neues richtiges Wort gesetzt wird.
Da es sich ja aber um eine Funktion handelt, muss ich das neue "richtig" doch irgendwohin übergeben.
Aber wohin?
Derzeit bleibt die die Variable "richtig" außerhalb der Check-Funktion immer gleich.
Ich habe keine Ahnung, wie ich das hier bei Tkinter mache.
Kann mir da jemand helfen?
Hier mal mein Code:
Code: Alles auswählen
from tkinter import *
from tkinter import messagebox
from random import choice
import vlc
# Hintergrundmusik
url = "https://stream.laut.fm/lofi"
instance = vlc.Instance('--input-repeat=-1', '--fullscreen')
player=instance.media_player_new()
media=instance.media_new(url)
player.set_media(media)
player.play()
#Fenster wird gebaut
root = Tk() #Fenster erzeugen
root.title("Vokabeltrainer") #Fenstertitel
#root.geometry("600x600") #Fenstergröße
root.attributes("-fullscreen", True) # Vollbild aktivieren
#Hintergrundbild
bg = PhotoImage(file = "img/bg1.png")
bg_label = Label(root, image = bg)
bg_label.grid(row = 0, column = 0, rowspan = 11, columnspan = 11)
def anmelden():
if benutzer_entry.get() == "emma" and passwort_entry.get() == "check":
benutzer_entry.delete(0, "end")
passwort_entry.delete(0, "end")
benutzer_entry.insert(0, "Benutzername")
passwort_entry.insert(0, "Passwort")
screen = Toplevel(root)
screen.title("Vokabeltrainer Programmstart") #Fenstertitel
screen.attributes("-fullscreen", True) # Vollbild aktivieren
bg = PhotoImage(file = "img/bg1.png")
bg_label = Label(screen, image = bg)
bg_label.grid(row = 0, column = 0, rowspan = 11, columnspan = 11)
englisch_woerterbuch = {"Haus":"house", "Auto":"car", "Wolke":"cloud", "Sonne":"sun", "Stift":"pencil", "Tisch":"table"}
woerterliste = []
for i in englisch_woerterbuch:
woerterliste.append(i)
gegeben_wort = choice(woerterliste)
richtig = englisch_woerterbuch[gegeben_wort]
def check(richtig):
if antwort_entry.get() == richtig:
richtig_label.config(text= "! RICHTIG !", fg = "green" )
player = vlc.MediaPlayer('sfx/right.mp3')
player.play()
player.get_instance()
gegeben_wort = choice(woerterliste)
wort_label.config(text = gegeben_wort)
richtig = englisch_woerterbuch[gegeben_wort]
antwort_entry.delete(0, "end")
else:
richtig_label.config(text= "! Leider falsch !", fg = "red" )
gegeben_wort = choice(woerterliste)
wort_label.config(text = gegeben_wort)
richtig = englisch_woerterbuch[gegeben_wort]
antwort_entry.delete(0, "end")
wort_label = Label (screen, text = gegeben_wort , font = ("", "40"), fg = "black", bg = "lightblue")
wort_label.grid(row = 4, column = 0, columnspan = 11)
antwort_entry = Entry (screen, text = "" , font = ("", "30"), fg = "black", bg = "lightblue", justify="center")
antwort_entry.grid(row = 5, column = 0, columnspan = 11)
richtig_label = Label (screen , font = ("", "10"), fg = "green", bg = "lightblue")
richtig_label.grid(row = 6, column = 0, columnspan = 11, sticky = "n")
antwort_button = Button (screen, text = "Antworten" , font = ("", "30"), fg = "white", bg = "green", border = 2, command = lambda: check(richtig))
antwort_button.grid(row = 8, column = 0, columnspan = 11)
abmelden_button = Button (screen, text = "Abmelden" , font = ("", "30"), fg = "white", bg = "green", border = 2, command = screen.destroy)
abmelden_button.grid(row = 9, column = 0, columnspan = 11)
exit_button = Button (screen, text = "EXIT" , font = ("", "50"), fg = "white", bg = "brown", border = 4, command = root.destroy)
exit_button.grid(row = 10, column = 0)
screen.mainloop()
else:
#messagebox.showerror(title="Login Fehlgeschlagen", message="Benutzername und/oder Passwort ist falsch")
error_label.config(text = "- Benutzername und/oder Passwort ist falsch -", fg = "white", bg ="red")
# Layout erzeugen
benutzer_entry = Entry (root, text = "" , font = ("", "30"), fg = "white", bg = "green", border = 2)
benutzer_entry.grid(row = 5, column = 0, columnspan = 11)
benutzer_entry.insert(0, "Benutzername")
passwort_entry = Entry (root, text = "" , font = ("", "30"), fg = "white", bg = "green", border = 2, show = "*")
passwort_entry.grid(row = 6, column = 0, columnspan = 11)
passwort_entry.insert(0, "Passwort")
anmelden_button = Button (root, text = "Anmelden" , font = ("", "30"), fg = "white", bg = "green", border = 2, command = anmelden)
anmelden_button.grid(row = 7, column = 0, columnspan = 11)
error_label = Label (root, font = ("", "20"), bg="#99e11b")
error_label.grid(row = 8, column = 0, columnspan = 11, sticky = S)
exit_button = Button (root, text = "EXIT" , font = ("", "50"), fg = "white", bg = "brown", border = 4, command = root.destroy)
exit_button.grid(row = 10, column = 0)
version_label = Label (root, text = " Version 0.1 " , font = ("", "10"), fg = "yellow", bg = "brown", border = 0)
version_label.grid(row = 10, column = 10, sticky = SE)
root.mainloop()
