Sudoku megoldó grafikus felhasználói felülettel (GUI)

Az előző bejegyzésben néhány függvényt definiáltunk és használtuk egy sudoku játékot megoldó program előállítására. Most e programot kicsit látványosabbá tesszük azzal, hogy a sudoku táblázatot grafikus felülettel jelenítjük meg a tkinter modult használva.

A programunk készítésének elve és fő részei a következők:

  • Az eddigi eredményeinket, azaz a függvénydefiníciókat egy modulfájlba elmentjük. Ebből aztán majd a jelen programunkba a megoldó függvényt beimportáljuk.
  • Az előzőkhöz hasonlóan a megoldandó sudoku kezdősorainak értékei egy karakterláncban állnak rendelkezésre, amiből előállítjuk a sudokumátrixot.
  • A sudokumátrixot egy keret grafikus elemben rajzoljuk ki, ahol az egyes cellákat táblázatos elrendezésben (9×9 grid) egy-egy keret elemben jelenítjük meg.
  • A megoldás előhívásához pedig egy nyomógomb elemet helyezünk el e táblázat alatt a főablak alján.
  • Egy olyan függvényt definiálunk, amely a kiinduló sudokumátrixot a beimportált megoldófüggvénnyel megoldja, és az eredményül kapott számokat a kirajzolt táblázat üres helyein megjeleníti.
  • A nyomógomb elemet úgy konfiguráljuk, hogy e definiált függvény a gomb lenyomásakor a megfelelő módon meg legyen hívva.

A számok cellakeretekben történő kiíratására több lehetőség van. Mivel a programunkat most csak arra tervezzük, hogy a megoldást kiírja, ezért alkalmazhatnánk erre például a címke (Label) grafikus elemet. De gondolunk a továbbfejleszthetőségre, nevezetesen arra, hogy esetleg igény lehet majd, hogy játszani is lehessen vele, azaz manuálisan bevinni a cellákba a számokat. Ezért inkább a beviteli mező (Entry) elemmel fogjuk a sudoku egyes celláiban szereplő számokat megjeleníteni. E grafikus elem szöveges tartalmát a hozzárendelt kontrollváltozóval lehet kiírni és változtatni. Ezért ezeket a program indulásakor létre kell hozni a kezdőtábla értékeivel, majd a megoldás előhívásakor a gomb megnyomásakor lefutó függvényünkben az eddig üres cellákba került értékekre állítani be őket.

A program kódját, valamint az induló és a nyomógomb megnyomása után megjelenő megoldott táblát láthatjuk alább. A program működését a fenti leírás és részletes kommentek alapján lehet követni.

A képhez tartozó alt jellemző üres; sudoku_GUI_solved-1024x537.jpg a fájlnév

A programban alkalmazott grafikus elemek vagy a kontrollváltozók használati részleteiről a Python tudásépítés lépésről lépésre című e-könyv „Grafikus felhasználói felület készítése” fejezetének alábbi alfejezeteiben találunk bővebb kifejtést:

  • Grafikus elemek konfigurálásának módjai
  • Kontrollváltozók
  • A grafikus elemek fajtái, létrehozásuk és konfigurálásuk” – „Nyomógomb”, „Beviteli mező” és „Keret” alcímek.

Érdekel a Python tudásépítés lépésről lépésre az alapoktól az első asztali alkalmazásig című e-könyv.