-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGuiSQLPythonAufgabe.py
More file actions
106 lines (94 loc) · 3.6 KB
/
GuiSQLPythonAufgabe.py
File metadata and controls
106 lines (94 loc) · 3.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import tkinter
import sqlite3
# Datenbankverbindung herstellen
verbindung = sqlite3.connect("teilnehmer.db")
cursor = verbindung.cursor()
# Tabelle erstellen, falls sie nicht existiert | Primärschlüssel, automatisch hochgezählt | Name darf nicht leer sein
cursor.execute("""
CREATE TABLE IF NOT EXISTS teilnehmer(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL
)
""")
verbindung.commit() #Änderungen in der Datenbank speichern
#Funktion zum Laden der Namen aus der Datenbank
def laden():
cursor.execute("SELECT name FROM teilnehmer") # Alle Namen aus der Tabelle "teilnehmer" auswählen
namen = cursor.fetchall() # Alle Ergebnisse abrufen
for name in namen:
output.insert(tkinter.END, name[0] + "\n") # Jeden Namen im Text-Widget anzeigen
#Window erstellen mit Titel
window = tkinter.Tk()
window.geometry("400x600") # Breite x Höhe
window.title("Einfache Teilnmehmerliste")
#Label
label = tkinter.Label( # label ist die Variable, in der das Label gespeichert wird
window, # Ein Label ist ein GUI-Element, das Text im Fenster anzeigt. Das Label-Objekt gehört zum Fenster
width=30, # Breite des Labels
font=("Arial", 20, "bold"),
text="Teilnehmer eingeben"
)
label.pack(pady=20)
#name
label = tkinter.Label(
window,
width=30,
font=("Arial", 14),
text="Name:"
)
label.pack()
#Eingabefeld
entry = tkinter.Entry(
window,
width=25,
font =("Arial", 14)
)
entry.pack(pady=20)
#Funktionen zum Speichern und Löschen
namen=[]
def speichern():
namen.append(entry.get())
cursor.execute("INSERT INTO teilnehmer (name) VALUES (?)", (entry.get(),)) #← entry.get() - String, a vessző teszi tuple-lá! , nélkül csak sima string.
# `VALUES (?)` enthält einen Platzhalter. er eigentliche Name wird als zweiter Wert übergeben.
verbindung.commit()
output.insert(tkinter.END, entry.get() + "\n")
entry.delete(0, tkinter.END)
def loeschen():
output.delete("1.0", tkinter.END) # Löscht den gesamten Text im Text-Widget Text-Widgetnél az index "1.0" = 1. sor, 0. karakter (az elejétől)
entry.delete(0, tkinter.END) # Löscht den Inhalt des Entry-Widgets
namen.clear() # Löscht die Liste der Namen
cursor.execute("DELETE FROM teilnehmer") # Alle Einträge in der Tabelle "teilnehmer" löschen
verbindung.commit()
#Speichern Button
ausgabe_button = tkinter.Button(
window, # Der Button gehört zum Fenster
text="Speichern", # Text auf dem Button
width=20, # Breite des Buttons
command=speichern
)
ausgabe_button.pack(pady=10)
#Delete Button
delete_button = tkinter.Button(
window,
text="Alles löschen", # Text auf dem Button
width=20, # Breite des Buttons
command=loeschen
)
delete_button.pack(pady=20)
#Ausgabe Label
output_label = tkinter.Label(
window, # Das Label gehört zum Fenster
width=30, # Breite des Labels
text=" Gespeicherte Namen:"
)
output_label.pack(pady=10)
#Ausgabe Textfeld
output = tkinter.Text(
window,
width=30,
height=10, # Anzahl der Zeilen
font=("Arial", 14)
)
output.pack(pady=10)
laden() #Namen aus der Datenbank laden und im Text-Widget anzeigen
window.mainloop()