Irgendwas mit einem Entry Feld

Fragen zu Tkinter.
Antworten
ElBarto
User
Beiträge: 3
Registriert: Freitag 14. Mai 2021, 09:12

Ich möchte den in einem Eingabe Feld eingegebenen Text auslesen und den ausgelesenen Text dann mit einer if-abfrage überprüfen ob es ein bestimmter text ist.
Bei mir kommt aber immer nur die Fehlermeldung die ich einprogrammiert habe, wenn es nicht der richtige Text ist.
Meine Theorie ist ja, dass der Wert des Entryfeldes nicht richtig ausgelesen wird.
Wenn jemand weiß was ich falsch gemacht habe soll er es mir mitteilen.
Lg ElBarto
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

@ElBarto: Das wird schwierig, wenn du nicht zeigst, was du tust. Also deinen Code.
ElBarto
User
Beiträge: 3
Registriert: Freitag 14. Mai 2021, 09:12

J a hier ist mein code:
from tkinter import *
from tkinter import messagebox

fenster= Tk()
fenster.title("Test")
Label(fenster, text="Finde die richtige Nummer und gebe sie in das feld ein =>") .grid(row=0)
e1 = Entry(fenster)
e1.grid(row=0, column=1)
def check():
e1.get()
wert = e1.get()
if wert == 240511:
return Label("Richtig,Öffne den Ordner Geschenk und verwende diese Zahl als Passwort")
else :
messagebox.showinfo( "Falsch", "Suche weiter")
check_button = Button(fenster, text="Überprüfen", command=check).grid(row=1,column=0)
e1.get()
wert = e1.get()

fenster.mainloop()
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

*-Importe sind schlecht, weil man nicht nachvollziehen kann, woher welcher Name kommt.
Alles was eine Funktion braucht, muß sie auch über ihre Argumente bekommen, `e1` kommt aber in `check` so dem nichts. Benutze keine globalen Variablen.
Man baut einmal ein Fenster auf und erzeugt nicht nachträglich noch Label. Das Label wird auch gar nicht benutzt, der Rückgabewert von `check` landet im Nichts.
Auf oberster Ebene dürfen nur Konstanten oder (Funktions-)Definitionen stehen.
Die puren ›e1.get()‹-Aufrufe sind unsinnig, weil sie mit dem Rückgabewert nichts machen.
`wert` in der vorletzten Zeile wird gar nicht benutzt, hat aber auch keinen sinnvollen Wert, weil zu diesem Zeitpunkt der Nutzer noch gar keine Chance hatte, etwas ins Entry-Feld einzutragen.
check_button enthält den Wert None, ist also auch nicht sinnvoll.
`e1` ist ein sehr schlechter Variablenname, weil nichtssagend.
`get` liefert einen String und keine Zahl.

Code: Alles auswählen

from functools import partial
import tkinter as tk
from tkinter import messagebox

def check(password):
    wert = password.get()
    if wert == "240511":
        messagebox.showinfo("Richtig", "Öffne den Ordner Geschenk und verwende diese Zahl als Passwort")
    else :
        messagebox.showinfo("Falsch", "Suche weiter")       


def main():
    fenster= tk.Tk()
    fenster.title("Test")
    tk.Label(fenster, text="Finde die richtige Nummer und gebe sie in das feld ein =>").grid(row=0, column=0)
    password = tk.Entry(fenster)
    password.grid(row=0, column=1)
    tk.Button(fenster, text="Überprüfen", command=partial(check, password)).grid(row=1,column=0)
    fenster.mainloop()

if __name__ == '__main__':
    main()
ElBarto
User
Beiträge: 3
Registriert: Freitag 14. Mai 2021, 09:12

Danke für die Hilfe
Antworten