6.1. PyQt-käyttöliittymäohjelmointi
Useissa projektiaiheissa on tarkoitus laatia graafinen käyttöliittymä ohjelmalle. Pythonilla graafisen käyttöliittymän ohjelmointiin hyvä vaihtoehto on PyQt, joka perustuu Qt-kehitysympäristöön. Muitakin mahdollisuuksia graafisten käyttöliittymien laatimiseen on; Pythonin mukana tulee tkinter, joka on Python rajapinta Tcl/Tk -käyttöliittymäkirjastoon. Tcl/Tk:ta pidetään kuitenkin vanhanaikaisena ja sillä tehtyjä käyttöliittymiä rumina. Muita graafisia ympäristöjä kuvataan esimerkiksi sivuilla https://wiki.python.org/moin/GuiProgramming ja http://docs.python-guide.org/en/latest/scenarios/gui/.
PyQt:n käyttöönotto
Ennen asennusta sinun kannattaa tutustua alla mainittuihin dokumentteihin ja päättää, käytätkö PyQt:n versiota 4 vai 5. Asennusohjeet ovat sivulla Python3asennusohjeet.html.
Kerro havaitsemistasi ongelmista!
Näitä ohjeita ei ole testattu kaikilla mahdollisilla kokoonpanoilla. Jos ongelmia tulee, laita viestiä Piazzaan.
PyQt:n opettelu
PyQt:stä on käytössä kaksi versiota PyQt4 ja PyQt5. PyQt5:een tutustuminen tapahtuu helpoiten seuraavien lähteiden avulla:
- Tutoriaali, johon kannattaa tutustua huolellisesti: PyQt5 Tutorial. Kokeilujen helpottamiseksi esimerkkikoodit on koottu oheiseen zip-tiedostoon zetcode-pyqt5-tutorial-files.zip. Koodeissa on korjattu pari bugia ja lisäksi zip sisältää muutaman datatiedoston, joita ohjelmat käyttävät.
- Täältä löytyvät kaikki luokat: PyQt5 Reference Guide.
- Python-wikissä on osio PyQt:lle: https://wiki.python.org/moin/PyQt.
Koulun koneille on valmiiksi asennettu versio neljä, jonka dokumentaatio vastaavasti on:
- Tutoriaali on PyQt4 Tutorial, mutta siinä käytetään valitettavasti Pythonin versiota 2.
- PyQt4 Reference Guide.
- PyQt4:n luokat löytyvät sivulta http://pyqt.sourceforge.net/Docs/PyQt4/classes.html.
PyQt perustuu siis Qt-kehitysympäristöön, joka on dokumentoitu paremmin kuin PyQt. Qt:n dokumentaatio perustuu C++ -kieleen eikä Pythoniin, joten sitä ei voi suoraan noudattaa, mutta käyttöliittymäkomponenttien toiminta saattaa selvitä paremmin Qt:n dokumentaatiosta. Ks.