Hallo. Habe mit tk Entry Felder erstellt und mit einer Funktion die Werte gespeichert. Nun habe ich die Entry Felder durch eine for Schleife verkürzt, aber es wird nicht mehr auf den Befehl .get() in der Funktion zugeriffen. Das Programm läuft, aber die eingegeben Werte werden nicht in ein txt gespeichert..
Danke
# Entry / Eingabe erstellen
ent_entry = {1 : 'self.ent_matrNr', 2 : 'self.ent_vorname', 3 : 'self.ent_nachname', 4 : 'self.ent_gebDatum', 5 : 'self.ent_email', 6 : 'self.ent_telNr'}
text = ['Matrikel Nr.:', 'Vorname', 'Nachname', 'Geburtsdatum', 'E-Mail :', 'Telefonnummer']
i = 0
for k, v in ent_entry.items():
#print(v, type(v))
v = tk.Entry(self)
v.grid(row=i, column=1)
i += 1
'''
self.ent_matrNr = tk.Entry(self)
self.ent_matrNr.grid(row=0, column=1)
self.ent_vorname = tk.Entry(self)
self.ent_vorname.grid(row=1, column=1)
self.ent_nachname = tk.Entry(self)
self.ent_nachname.grid(row=2, column=1)
self.ent_gebDatum = tk.Entry(self)
self.ent_gebDatum.grid(row=3, column=1)
self.ent_email = tk.Entry(self)
self.ent_email.grid(row=4, column=1)
self.ent_telNr = tk.Entry(self)
self.ent_telNr.grid(row=5, column=1)
'''
self.button_speichern = tk.Button(self, text="Speichern", command=self.speichern)
self.button_speichern.grid(row=7, column=0, columnspan=20, padx=5, pady=10, sticky='w')
def speichern(self):
out = tk.filedialog.asksaveasfile(mode='w', defaultextension=".txt")
text2save = 'Matrikel Nr., Vorname, Nachname, Geburtsdatum, E-Mail, Telefonnummer\n' + self.ent_matrNr.get() +','+ self.ent_vorname.get() +','+ self.ent_nachname.get() +','+ self.ent_gebDatum.get() +','+ self.ent_email.get() +','+ self.ent_telNr.get()
out.write(text2save)
out.close()
self.daten_loeschen()
tk.messagebox.showinfo("Studentendaten - Speichern", "Daten wurden gespeichert!")
tkinter.Entry mit for schleife erstellen
Du mußt Dir die erzeugten Entry-Felder auch merken. Nur weil eine Variable v irgendwann einmal dem String "self.ent_matrNr" zugewiesen war, ändert sich nichts, wenn v später ein Entry-Feld ist. Stell Dir vor, da würde irgendetwas magisches passieren, was bedeutet dann
Vielleicht dass in Zukunft überall wo der Wert 5 benutzt wird, statt dessen mit 7 gerechnet wird?
Was Du suchst ist ein Wörterbuch, wo zu jedem Eintrag das Eingabefeld zugeordnet ist:
Code: Alles auswählen
v = 5
v = 7
Was Du suchst ist ein Wörterbuch, wo zu jedem Eintrag das Eingabefeld zugeordnet ist:
Code: Alles auswählen
class InputDialog:
ENTRY_NAMES = ['Matrikel Nr.:', 'Vorname', 'Nachname', 'Geburtsdatum', 'E-Mail :', 'Telefonnummer']
def __init__(self, ...)
# Entry / Eingabe erstellen
self.entries = {}
for i, name in enumerate(self.ENTRY_NAMES):
tk.Label(self, text=name).grid(row=i, column=0)
entries[name] = tk.Entry(self)
entries[name].grid(row=i, column=1)
self.button_speichern = tk.Button(self, text="Speichern", command=self.speichern)
self.button_speichern.grid(row=7, column=0, columnspan=20, padx=5, pady=10, sticky='w')
def speichern(self):
filename = tk.filedialog.asksaveasfilename(defaultextension=".txt")
with open(filename, 'w') as output:
output.write(', '.join(self.ENTRY_NAMES) + '\n')
output.write(', '.join(self.entries(k).get() for k in self.ENTRY_NAMES) + '\n')
self.daten_loeschen()
tk.messagebox.showinfo("Studentendaten - Speichern", "Daten wurden gespeichert!")
-
- User
- Beiträge: 2
- Registriert: Freitag 18. Januar 2019, 05:01
Hallo Sirius3
Danke für deine Hilfe. Hab es hinbekommen.
MfG
Danke für deine Hilfe. Hab es hinbekommen.
MfG