Hogyan készítsünk Excel táblához hasonló számolótáblát? – 5. befejező rész

Az előző bejegyzésekben, megadott specifikáció alapján egy Excelszerű egyszerű számolótábla fejlesztésébe kezdtünk. A megvalósítást három fő részre bontottuk, amelyből az első kettőt, vagyis a táblázat kirajzolását, valamint az egyes cellákban levő beviteli mezőkhöz tartozó kontrollváltozók létrehozását, már megtettük. A harmadik fázis az eseménykezelők kidolgozása. Ezekből a cellatartalom kiértékelését és aktualizálását végző eseménykezelőket, valamint egy adott cellában levő képletet előhívó eseménykezelőt az előző részekben már implementáltuk.

Ebben a részben valósítjuk meg a még fennmaradókat, amelyek a következők:

  • A move_cursor() nevű eseménykezelő, amely az eseménnyel érintett beviteli mezőből a kurzort az alatta levő cellába viszi, ha az Enter billentyűt lenyomjuk. Ha nincs alatta cella, akkor a jobbra mellette levőbe. Ha ez sincs, akkor marad a kurzor az aktuális cellában.
  • A fit_column_width() nevű eseménykezelővel érhető az el, hogy a jobb egérgombbal duplán kattintva az eseménnyel érintett cella (beviteli mező) oszlopának szélességét az oszlop leghosszabb cellatartalmához igazítsuk, hogy egy hosszú képlet is teljes egészében látható legyen.  Ugyanezzel az eseménykezelővel tudjuk azt megvalósítani, hogy az oszlop szélessége az alapértelmezett értékre álljon, ha úgy kattintunk a jobb egérgombbal duplán, hogy közben a Ctrl billentyűt nyomva tartjuk.
  • A delete_cell_content() eseménykezelő arra szolgál, hogy ha a Del billentyűt lenyomjuk, akkor az eseménnyel érintett beviteli mező megjelenő tartalma és a mögöttes képlet törlődik, azaz üres karakterlánc lesz helyettük.

Ezen eseménykezelők fejléceit láthatjuk alább, feltüntetve az események és eseménykezelők összerendelését, valamint a releváns kódkörnyezetet is. A többi kódot az előző bejegyzésekben találjuk.

A következő kódsorok mutatják a fenti három eseménykezelő definícióját. A delete_cell_content() kódja rövid és eléggé magától értetődő, ezért különösebb magyarázatot nem igényel. A másik kettő felépítésének és működési logikájának megértését a részletes kommentek segítik.

Ezekkel lényegében be is fejeztük a számolótábla elkészítését. Mindezek után a teljes kód így néz ki:

A kód elérhető a https://github.com/pythontudasepites/szamolotabla linken is.

Természetesen nagyon tág tér nyílik a továbbfejlesztésre, hiszen az Excel vagy más táblázatkezelő funkcióit kell csak megnézni és megpróbálni leutánozni.

De a számolótáblánk ebben az egyszerű formában is használható. Előnye, hogy bármilyen definiált Python függvényt alkalmazhatunk a cellaképletben. Csak be kell importálni a függvénydefiníciókat, hasonlóan, ahogy a fenti kódban beimportáltuk a szabványos könyvtár math moduljának összes matematikai függvényét.

É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.