Umgang mit mehreren Entry-Feldern

Fragen zu Tkinter.
Antworten
HLOO
User
Beiträge: 3
Registriert: Montag 20. Mai 2019, 17:40

Hallo,

Ich möchte gern mit Python/tkinter ein Sudoku-Löser bauen. Zur Probe baute ich erst einmal eins für kleine 6er Sudokus. Das hat soweit schon einmal toll funktioniert.
Für die Eingabe und Ausgabe habe ich mich für das Entry-feld entschieden, vielmehr 36 davon.
Was mich stört, ist dass ich jedes Eingabefeld einzeln definieren, packen, einlesen und ausgeben musste. Also in etwa so:

Eingabefeld_11 = Entry(Panel_1, bd=5, width=3)
Eingabefeld_12 = Entry(Panel_1, bd=5, width=3)
Eingabefeld_13 = Entry(Panel_1, bd=5, width=3)

Eingabefeld_66 = Entry(Panel_6, bd=5, width=3)

Bzw:
Eingabefeld_11.pack(side='left')
Eingabefeld_12.pack(side='left')
Eingabefeld_13.pack(side='left')
Label_13.pack(side='left') # für den Abstand zwischen der 3. und 4. Spalte
Eingabefeld_14.pack(side='left')

Eingabefeld_66.pack(side='left')

Oder:
Eingabefeld_11.delete(0,END); Eingabefeld_11.insert(1,Matrix[0][1])
Eingabefeld_12.delete(0,END); Eingabefeld_12.insert(1,Matrix[0][2])
Eingabefeld_13.delete(0,END); Eingabefeld_13.insert(1,Matrix[0][3])

Eingabefeld_66.delete(0,END); Eingabefeld_66.insert(1,Matrix[5][5])


Um die viele Schreibarbeit zu sparen, hätte ich gern eine Möglichkeit wo ich die Eingabefelder eleganter und effektiver mit einer bzw 2 for-Schleifen ansprechen kann.
Ich stelle mir das etwa so vor( z.B. beim Einlesen):
for x in range(9):
for y in range(9):
Liste.append(int(Eingabefeld_x_y.get())) #wobei x und y aber die Schleifenvariablen sein sollen

Ich habe nirgendwo etwas finden können, wie man so eine Variable in einer Variablenbezeichnung unterbringen kann.
Kann mir einer einen Tipp geben?

Danke, HLOO
__deets__
User
Beiträge: 14536
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wenn du zu deiner Idee, die Felder in einer for-Schleife abzufragen einfach noch die Idee, sie auch in einer solchen zu erzeugen hinzufügst, dann bist du da wo du hin willst. Wichtig natürlich die Entries in einer geeigneten Datenstruktur - doppelt verschachtelte Liste, Wörterbuch mit (x, y)-Tupel - zu speichern.
HLOO
User
Beiträge: 3
Registriert: Montag 20. Mai 2019, 17:40

Danke für den Hinweis.
Ich hab die Daten in einer Matrix gespeichert, das mit der Liste ist nur ein Zwischenschritt gewesen.
Aber ich weiß immer noch nicht wie ich in einer Schleife mehrere Eingabe-Felder erzeuge, die dann verschiedene Namen haben müssen.

HLOO
__deets__
User
Beiträge: 14536
Registriert: Mittwoch 14. Oktober 2015, 14:29

Warum sollten die denn Namen haben? Du stopfst die in eine Liste. Und sprichst sie über ihren Index an.
HLOO
User
Beiträge: 3
Registriert: Montag 20. Mai 2019, 17:40

Ich glaube, ich verstehe langsam:
Du meinst ich mache eine Liste oder Matrix, welche nicht irgendwelche Werte, sondern Entry-Felder enthält.
Das werde ich mal probieren. Erstmal vielen Dank.

Gruß,
HLOO
__deets__
User
Beiträge: 14536
Registriert: Mittwoch 14. Oktober 2015, 14:29

Jupp. Genau das. Objekte sind Objekte sind Objekte (in Python). Der Sprache ist das wumpe, ob du int, set oder Entry Objekte in eine Datenstruktur packst.
Antworten