Seite 1 von 1
Textboxen nacheinander einlesen
Verfasst: Montag 4. Mai 2020, 10:41
von kwon
Hallo, ich bin ein Python-Anfänger und benötige etwas Hilfe...
Ich habe schon viel gegoogelt, aber bin nicht gut vorangekommen.
Mein langfristiges Ziel ist es 81 Textboxen von einer GUI tkinter einzulesen.
Ich wollte mich erstmal einfach dem Problem nähern - und zuerst 2 Textboxen einlesen und in einer Liste speichern.
Ich bekomme es nicht hin über die Textboxen zu iterieren, also erst t1.get() dann t2.get() zu erreichen.
Beim zusammensetzen verliert zb t1 wahrscheinlich seine "Entry-Eigenschaft" und es kommt ein String heraus (get() geht dann natürlich nicht)...
Könnt ihr mir einen Hinweis geben, wie ich erst t1.get() dann t2.get() erreiche?
Vielen Dank für die Hilfe!!
Grüße,
kwon
Code: Alles auswählen
import tkinter
fenster = tkinter.Tk()
t1= tkinter.Entry(fenster)
t1.place(x=50,y=100)
t2= tkinter.Entry(fenster)
t2.place(x=100,y=200)
def einlesen(i):
zusammen="t" + str(i)
eingabe=zusammen.get()
liste=[]
liste.append(eingabe)
print(liste)
for i in range(1,3):
einlesen(i)
b=tkinter.Button(fenster,text="eingabe", command=einlesen)
b.place(x=100,y=150)
fenster.mainloop()
Re: Textboxen nacheinander einlesen
Verfasst: Montag 4. Mai 2020, 11:09
von Sirius3
Das macht man so nicht. Wie Du schon selbst schreibst, willst Du eigentlich alle Eingabefelder in eine Liste packen, dann ist der Zugriff über eine for-Schleife auch ganz einfach.
`place` solltest Du nicht verwenden. Benutze pack oder grid.
`einlesen` erwartet ein Argument, das Du beim Button nicht mitgibst.
Re: Textboxen nacheinander einlesen
Verfasst: Montag 4. Mai 2020, 13:23
von kwon
Hallo Sirius3,
dankeschön für die Hinweise!!
Ich tüftele noch etwas...
Viele Grüße,
kwon
Re: Textboxen nacheinander einlesen
Verfasst: Montag 4. Mai 2020, 16:44
von kwon
Hallo, liebe Python-Gemeinde,
es tut mir leid, aber ich komme momentan allein nicht weiter...
Ich bin ganz neu dabei Python zu lernen.
Ich habe auf dem GUI 2 Textboxen und einen Button. Klickt man den Button, dann soll der Inhalt der beiden Textboxen ausgegeben werden.
Ich habe gegoogelt und gebastelt - hier ist mein Stand:
Code: Alles auswählen
import tkinter
fenster = tkinter.Tk()
t1= tkinter.Entry(fenster)
t1.grid(row=0,column=0)
t2= tkinter.Entry(fenster)
t2.grid(row=0, column=1)
def test():
entries = []
for i in range(0):
for j in range(2):
entry = Entry(fenster)
entry.grid(row=i, column=j)
entries.append(entry)
for entry in entries:
print(entry.get())
input()
b=tkinter.Button(fenster,text="einlesen",command=test).grid(row=2,column=0)
fenster.mainloop()
Vielen Dank für die Hilfe im Voraus!!
Grüße,
kwon
Re: Textboxen nacheinander einlesen
Verfasst: Montag 4. Mai 2020, 17:01
von __deets__
Du rufst test nicht auf, du hast immer noch ein input in test das da nichts verloren hat, die Liste entries ist nur lokal in test und kann danach nirgendswo verwendet werden. Sie muss also aus test zurueckgegeben werden, und der untere Teil der die Entries ausliest muss in seine EIGENE Funktion. Du musst Anlage und Zugriff doch trennen - in dem Moment, wo die GUI gebaut wurde ,ist sie doch noch nicht benutzt und veraendert worden.
Re: Textboxen nacheinander einlesen
Verfasst: Dienstag 5. Mai 2020, 11:07
von kwon
Hallo,
vielleicht wäre jemand so freundlich und könnte mir den richtigen Code komplett hinschreiben?
Ich komme nicht mehr weiter...
Ich bin ein Anfänger was Python betrifft, habe vor ein paar Tagen erst damit begonnen.
Ich bräuchte den richtigen Code um mich etwas zu orientieren.
Wie man an meinem Code sehen kann, bin ich etwas verwirrt.
Vielleicht wäre ja jemand so freundlich?
Vielen Dank!!
Viele Grüße,
kwon
Code: Alles auswählen
import tkinter
fenster = tkinter.Tk()
t1= tkinter.Entry(fenster)
t1.grid(row=0,column=0)
t2= tkinter.Entry(fenster)
t2.grid(row=0, column=1)
def test():
for i in range(1):
for j in range(2):
en = tkinter.Entry(fenster).grid(row=i, column=j)
return en
z=test()
def h(c=z):
entries = []
for entry in entries:
entries=entries.append(c.get())
return entries
u=h()
b=tkinter.Button(fenster,text="einlesen",command=test).grid(row=2,column=0)
h(z)
print(u)
fenster.mainloop()
Re: Textboxen nacheinander einlesen
Verfasst: Dienstag 5. Mai 2020, 11:44
von Sirius3
Am besten schreibst Du nur das, was Du auch verstehst. Dazu hilft es, jeden einzelnen Schritt im Interaktiven Modus auszuprobieren.
GUI-Programmierung ist nichts für Anfänger, wenn man noch nicht das Konzept von Funktionen und Klassen verstanden hat.
Schau z.B. mal an, was in b oder en für Werte stehen.
In `h` wird an entries ziemlich viel gebunden. Schau Dir mal Schritt für Schritt an, was da passiert.
Dir fehlen noch die Grundlagen von Listen, und Variablen im Allgemeinen. Arbeite ein Tutorial durch, damit Du an einfachen Übungen dafür ein Gefühl bekommst.
Es hilft nichts, in diesem Stadium Dir irgendeinen fertigen Code vor die Füße zu werfen.
Re: Textboxen nacheinander einlesen
Verfasst: Dienstag 5. Mai 2020, 12:17
von kwon
Hallo Sirius3,
okay, ich seh's ein.
War schon mal im Tutorial von der Python Dokumentation - habe auch eine andere Seite zum Python-Lernen entdeckt, da werde ich mich drum kümmern.
Ich muss wohl mein Wunsch-Thema vorerst hintenanstellen. Da wahr ich wohl zu ungeduldig...
Danke für den Hinweis...
Viele Grüße,
kwon
Re: Textboxen nacheinander einlesen
Verfasst: Dienstag 5. Mai 2020, 12:35
von peterpy
Hallo kwon,
mit googeln und basteln wirst Du nicht weit kommen.
Du willst doch auch verstehen, was das Script tut?
Schau dir die Tkinter Dokumentation an:
https://anzeljg.github.io/rin2/book2/24 ... index.html
Und verwende eindeutige, verständliche Bezeichner, nicht t1, t2, en.
Wenn Du dich von Anfang an verständliche Namen gewöhnst, fällt dir und uns das Lesen deiner Scripte viel leichter.
Wenn Du ein Entry auslesen willst, benötigst Du eine Textvariable der Klasse StringVar.
Code: Alles auswählen
variable = StringVar()
eingabefeld = Entry(root, textvariable=variable)
feldinhalt = variable.get()
Ich rate dir, ein Buch zu lesen, z. B.
http://openbook.rheinwerk-verlag.de/python/
oder: Python Ge-Packt
https://www.mitp.de/IT-WEB/Programmieru ... -oxid.html,
oder dir das Tutorial "einzuverleiben".
https://py-tutorial-de.readthedocs.io/de/python-3.3/
Beispiele zur Erstellung von Entrys gibts hier im Forum genügend.
Gruss Peter
Re: Textboxen nacheinander einlesen
Verfasst: Dienstag 5. Mai 2020, 13:02
von kwon
Hallo Peter,
vielen Dank für die Hinweise, das ist sehr hilfreich!
Ich lese gerade ein Buch über Python (vom Rheinwerk-Verlag) - habe mir eins gekauft.
Auch die erwähnten Hinweise werde ich mir anschauen.
Werde jetzt längere Zeit studieren.
Ich wünsche dir eine schöne Woche...
Grüße,
kwon