Recursive Erstellung und Löschung von Entrys
Verfasst: Mittwoch 3. April 2024, 10:46
Ich erstelle zu Anfang 4 entrys plus label.
Ich möchte nun sobald ich in das vierte entry einen Text geschrieben habe ein fünftes hinzufügen und wenn das vierte leer ist dieses durch das fünfte ersetzen.
Derzeit schaffe ich es mehr entrys hinzuzufügen wenn das jeweils letzte einen Eintrag hat und diese wieder zu löschen bis ich Minimum wieder vier entrys habe.
Ich mache das ganze nur nicht "schön" .
Ich komme derzeit auch nicht weiter da mir einfach keine Funktion einfällt mit der ich das schön umsetzen könnte.
Hier der Code.
Ich bitte um Tipps wie ich mein Vorhaben umsetzen kann.
Die Namensgebung passe ich an wenn ich etwas funktionierendes habe.
Ich möchte nun sobald ich in das vierte entry einen Text geschrieben habe ein fünftes hinzufügen und wenn das vierte leer ist dieses durch das fünfte ersetzen.
Derzeit schaffe ich es mehr entrys hinzuzufügen wenn das jeweils letzte einen Eintrag hat und diese wieder zu löschen bis ich Minimum wieder vier entrys habe.
Ich mache das ganze nur nicht "schön" .
Ich komme derzeit auch nicht weiter da mir einfach keine Funktion einfällt mit der ich das schön umsetzen könnte.
Hier der Code.
Ich bitte um Tipps wie ich mein Vorhaben umsetzen kann.
Die Namensgebung passe ich an wenn ich etwas funktionierendes habe.
Code: Alles auswählen
import tkinter as tk
import threading
import time
class MyApp:
def __init__(self, root):
self.root = root
self.names = list(range(1, 49))
self.entry = {}
self.label = {}
self.rownumber = 0
self.entrynumber = 1
self.minentry = 4
for name in self.names:
e = tk.Entry(self.root)
self.entry[name] = e
lb = tk.Label(self.root, text=name)
self.label[name] = lb
for x in range(4):
self.entry[self.entrynumber].grid(row=self.rownumber, column=0, sticky=tk.E)
self.label[self.entrynumber].grid(row=self.rownumber, column=1)
self.rownumber += 1
self.entrynumber += 1
b = tk.Button(self.root, text="Print all", command=self.print_all_entries)
b.grid(row=100, sticky=tk.S)
threading.Thread(target=self.add_more).start()
def add_more(self):
while True:
for name in self.names:
if self.entry[self.minentry].get() != "":
self.entry[self.entrynumber].grid(row=self.rownumber, column=0, sticky=tk.E)
self.label[self.entrynumber].grid(row=self.rownumber, column=1)
self.rownumber += 1
self.minentry += 1
self.entrynumber += 1
time.sleep(0.2)
if self.entry[self.minentry].get() == "" and self.minentry > 4:
self.entry[self.rownumber].grid_forget()
self.label[self.rownumber].grid_forget()
self.rownumber -= 1
self.minentry -= 1
self.entrynumber -= 1
def print_all_entries(self):
for name in self.names:
if self.entry[name].get() != "":
print(self.entry[name].get())
if __name__ == "__main__":
root = tk.Tk()
app = MyApp(root)
root.mainloop()