ich bin ziemlich neu in Python. Habe früher ein bisschen PHP programmiert.
Ich habe jetzt schon einiges hinbekommen. Formulare, welche Informationen in die Datenbank speichern, einige Abfragen und Darstellungen, Listen etc.
Was ich jetzt aber benötige bringt mich an den Rand der Verzweiflung.
Ziel:. Ich will, dass er mir eine Liste mit Personendaten einer SQL Datenbank ausgibt. Weiterhin soll er ein Eingabefeld hinzufügen, wo ich einen Wert eingeben kann (Stückzahl). Nachdem ich diese eingegeben habe, soll unten ein weiteres Formular sein, wo ich eine kurze Beschreibung, ein Datum und ein Update Button habe, wo er mir die Informationen in eine !NEUE! Tabelle der Datenbank speichert und die ID der jeweiligen Person in eine Spalte der neuen Tabelle ebenfalls einträgt.
Ich habe versucht das ganze mit for oder while Schleifen zu lösen. Mein großes Problem ist eigentlich, dass ich es nicht hinbekomme, dass ich die Informationen "innerhalb" der einen Schleife in eine andere Schleife zum updaten bekomme. Beim erneuten ausführen der Schleife, löscht er mir ja wieder meine Eingabefelder. In diesem katuellen Stand zeigt er mir eine Fehlermeldung an, weil ~~~~~^^^
IndexError: string index out of range - weil ich gerade mit der Funktion "append" Methode experimentiert habe und irgendwie gedacht habe, ich könnte vielleicht die Infos in einer Variablen Liste mit append speichern - aber da komm ich nicht weiter
Code: Alles auswählen
# Connect to the database
conn = sqlite3.connect('data.db')
cursor=conn.cursor()
cursor2=conn.cursor()
# Execute the query to fetch first names and last names
cursor.execute("SELECT rowid, vorname, nachname, modul, zahler_id FROM piece_data WHERE meal=1")
# Fetch all entries
entries = cursor.fetchall()
# Initialize index
frame = tkinter.LabelFrame(mittagessen, text="Stück erhalten")
frame.config(bg="#F9EBB1")
frame.grid(row= 0, column=0)
frame2 = tkinter.LabelFrame(mittagessen, text="Eingaben bestätigen")
frame2.config(bg="#F9EBB1")
frame2.grid(row= 1, column=0)
entries1=[]
entries2=[]
# While loop to display all entries
def while_start():
index = 0
counter_rows=0
while index < len(entries):
rowid, firstname, lastname, modul, zahler_id = entries[index]
meal_entry_var=tk.StringVar()
meal_entry=tk.Entry(frame, width=5, textvariable=meal_entry_var)
meal_entry.grid(row=counter_rows, column=0)
meal_result= meal_entry.get()
entries2.append(meal_result)
entries1.append(zahler_id)
id_label=tk.Label(frame, text=f"{rowid}")
id_label.grid(row=counter_rows, column=1)
firstname_label=tk.Label(frame, text=f"{firstname}")
firstname_label.grid(row=counter_rows, column=2)
lastname_label=tk.Label(frame, text=f"{lastname}")
lastname_label.grid(row=counter_rows, column=3)
id_label=tk.Label(frame, text=f"{modul}")
id_label.grid(row=counter_rows, column=4)
counter_rows += 1
index += 1
while_start()
def update():
for entry in entries2:
zahler_id=entry[4].get()
meal_amount=entry[0].get()
preis_result= preis_entry.get()
date_entry2=date_entry.get()
grund_entry2=grund_entry.get()
meal_amount *= preis_result
cursor.execute('''INSERT INTO Soll (grund, betrag, datum, zahler_id) VALUES
(?, ?, ?, ?)''', (grund_entry2, meal_amount, date_entry2, zahler_id))
#Check
check = tkinter.Label(frame2, text="Werte bestätigen!", bg="green", fg="white")
check.grid(row=1, column=0)
check_box = tkinter.Checkbutton(frame2)
checkboxvar = tk.BooleanVar()
checkboxvar.set(False)
check_box["variable"] = checkboxvar
check_box.grid(row=2, column=0)
date_label=tkinter.Label(frame2, text="Datum der Berechnung")
date_label.grid(row=3, column=0)
date_entry_var=tk.StringVar()
date_entry=tk.Entry(frame2, textvariable=date_entry_var)
date_entry.grid(row=4, column=0)
date_label=tkinter.Label(frame2, text="Datum der Berechnung")
date_label.grid(row=3, column=0)
date_entry_var=tk.StringVar()
date_entry_var.set("DD.MM.YYYY")
date_entry=tk.Entry(frame2, textvariable=date_entry_var)
date_entry.grid(row=4, column=0)
grund_label=tkinter.Label(frame2, text="Abrechnungsbeschreibung")
grund_label.grid(row=5, column=0)
grund_entry_var=tk.StringVar()
grund_entry_var.set("01/2029")
grund_entry=tk.Entry(frame2, textvariable=grund_entry_var)
grund_entry.grid(row=6, column=0)
preis_label=tkinter.Label(frame2, text="Aktueller Preis")
preis_label.grid(row=7, column=0)
preis_entry_var=tk.StringVar()
preis_entry_var.set("4.50")
preis_entry=tk.Entry(frame2, textvariable=preis_entry_var)
preis_entry.grid(row=8, column=0)
button=tk.Button(frame2, text="Eintragen", command=update)
button.grid(row=9, column=0)
# Close the database connection
conn.close()
mittagessen.mainloop()