Hi Leute !
Ich habe mal eine Frage zu Tkinter Entry Textfelden :
Ich sitze an einer Software , mit der man Verbindung mit einem Echo Server aufnehemen kann (unnützlich , ich weiß) .
Doch ich wollte nicht einfach die Python Console als Texteingabe nehmen , sondern ein Tkinter Textfeld mit Labes u.s.w.
Doch nun weiß ich nicht wie man ein Entry Textfeld ausliest .
Im Internet habe ich nichts gefunden .
Es wäre toll , wenn jemand mit helfen könnte !
Lg,Nolram
Tkinter Textfeld auslesen
Hier mal ein Beispiel mit Ein- und Ausgabe.
Doch völlig gleich wie Du das nun für Deine Zwecke schreibst, Du holst Dir den Inhalt von Entry mit get() und prüfst, ob etwas ausgefüllt wurde:
http://effbot.org/tkinterbook/entry.htm
Doch völlig gleich wie Du das nun für Deine Zwecke schreibst, Du holst Dir den Inhalt von Entry mit get() und prüfst, ob etwas ausgefüllt wurde:
http://effbot.org/tkinterbook/entry.htm
Code: Alles auswählen
from tkinter import Tk, Entry, Button, Label, StringVar
class Eingabetest:
def __init__(self):
self.fenster = Tk()
self.eingabe = None
self.ausgabe = None
self.labeltext = StringVar()
def layout(self):
self.fenster.title("Eingabetest")
self.fenster.geometry("210x140")
self.eingabe = Entry(self.fenster)
self.eingabe.pack(pady = 10)
Label(
self.fenster,
textvariable = self.labeltext
).pack(pady = 2)
Button(
self.fenster,
text = "Eingabe",
command = self.pruefe_eingabe
).pack(pady = 4)
def pruefe_eingabe(self):
self.ausgabe = self.eingabe.get()
if self.ausgabe is not None and self.ausgabe != "":
self.labeltext.set(self.ausgabe)
def main(self):
self.layout()
self.fenster.mainloop()
if __name__ == "__main__":
Eingabetest().main()
@Melewo: noch ein paar kleine Tipps am Rande. Ein StringVar-Objekt gibt mit get immer einen String zurück, None kann es da nicht geben. Zeile 29 läßt sich so oder so kürzer schreiben als "if self.ausgabe". »ausgabe« wird auch gar nicht als Attribut gebraucht. Zum einen ist es der selbe Wert wie »eingabe.get()«, zum anderen dient es nur lokal, um ein Label zu setzen.
So, dann noch einmal die nach den Tipps bereinigte Version, aus der etwas übersichtlicher hervorgeht, wie sich der Inhalt von Entry auslesen lässt. Wobei eine Prüfung in dieser Form eigentlich nur erforderlich wird, wenn es sich um irgendwelche Eingaben von anderen Benutzern handelt, die gegen ein Muster abgeglichen werden oder nicht leer bleiben sollten. Nur für den Eigenbedarf, da ist ja zu sehen, wenn nichts ausgeben wird oder man müsste in einem Else-Zweig auf auf einen leeren "" String reagieren, wie etwa "Keine Daten".
Code: Alles auswählen
from tkinter import Tk, Entry, Button, Label, StringVar
class Eingabetest:
def __init__(self):
self.fenster = Tk()
self.eingabe = None
self.labeltext = StringVar()
def layout(self):
self.fenster.title("Eingabetest")
self.fenster.geometry("200x140")
self.eingabe = Entry(self.fenster)
self.eingabe.pack(pady = 10)
Label(
self.fenster,
textvariable = self.labeltext
).pack(pady = 2)
Button(
self.fenster,
text = "Eingabe",
command = self.pruefe_eingabe
).pack(pady = 4)
def pruefe_eingabe(self):
ausgabe = self.eingabe.get()
if ausgabe != "":
self.labeltext.set(ausgabe)
def main(self):
self.layout()
self.fenster.mainloop()
if __name__ == "__main__":
Eingabetest().main()
Zuletzt geändert von Melewo am Dienstag 5. September 2017, 10:33, insgesamt 1-mal geändert.
@Melewo: und jetzt noch der Feinschliff:
in Zeile 28 reicht völlig. Denn ein leerer String wird im boolschen Kontext als False gewertet.
Code: Alles auswählen
if ausgabe:
...
Gut, so geht es dann noch etwas kürzer mit dem if-Statement, wenn nichts folgt.
Code: Alles auswählen
def pruefe_eingabe(self):
ausgabe = self.eingabe.get()
if ausgabe:
self.labeltext.set(ausgabe)
else:
self.labeltext.set("Keine Daten!")
Und noch kompakter
Ob man das so kompakt besser findet sei dahingestellt, aber mindestens mal die Code-Dopplung fuer das self.labeltext.get wuerde mich stoeren.
Code: Alles auswählen
self.labeltext.set(self.eingabe.get() if self.eingabe.get() else "Keine Daten")
Code: Alles auswählen
def pruefe_eingabe(self):
ausgabe = self.eingabe.get()
if not ausgabe:
ausgabe = "Keine Daten!"
self.labeltext.set(ausgabe)
Als es noch keinen if-else-Operator gab beliebt, heute eher selten, hier aber doch recht lesbar:
Code: Alles auswählen
def pruefe_eingabe(self):
ausgabe = self.eingabe.get() or "Keine Daten!"
self.labeltext.set(ausgabe)
Das kenne ich noch mit or, nur nicht im Zusammenhang mit Python, da wäre ich nicht auf die Idee gekommen, das so zu benutzen. Aber ein Autor von einem PHP-Buch benutzte das häufig, wenn sich z.B. eine Datei nicht mit fopen öffnen ließ, um mit or die("Fehlermeldung") auszugeben und die weitere Ausführung des Scripts abzubrechen, wobei er das "die()" als Alias für exit() benutzte.
-
- User
- Beiträge: 2
- Registriert: Montag 4. September 2017, 15:57
Vielen Dank für all diese Antworten !
Da hab ich ja erstmal was zu lesen !
Vielen Dank ,
Nolram12345
Da hab ich ja erstmal was zu lesen !
Vielen Dank ,
Nolram12345