Umgang mit mehreren Entry-Feldern
Verfasst: Montag 20. Mai 2019, 19:02
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
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