HUOM: tämä on vapaaehtoinen harjoitus jolla voit harjoitella GUI:n rakentamista
Harjoituksen ratkomiseen voi kysellä vinkkejä harkkaryhmässä
Vastaavia tehtäviä voidaan julkaista muitakin mutta tästä on hyvä aloittaa.
Tehtävällä ei ole tarkastinta.
Ensimmäinen graafinen ohjelma
Rakennetaan ohjelma jolla voi ylläpitää nimilistaa.
Ohjelman logiikkapuolta (nimilista ja sen ylläpitoon käytetyt metodit) kuvastaa merkkijonoja sisältävä lista.
Ohjelman käyttöliittymän kautta ko. listaan/listasta voi lisätä/poistaa alkioita. Listan sisältö näytetään käyttöliittymässä.
Vaatimukset:
- Ikkuna jonka otsikko on "Ikkuna".
- Ikkunan sulkemalla ohjelma päättyy.
- QTextEdit johon ei saa kirjoittaa, jossa esitetään nimilista
- Ikkunassa on tekstikenttä (QLineEdit) johon voi kirjoittaa nimen.
- Tekstikentän vieressä on nappi jossa lukee "Add name". Tätä painaessa tapahtuu seuraavaa:
- tekstikentän teksti luetaan
- teksti lisätään listaan
- listan sisältö esitetään QTextEdit:ssa
- Edellisen napin vieressä on nappi "Delete name" joka vastaavasti poistaa nimen(jos sellainen löytyy), mutta toimii muuten identtisesti

Ohjelman rakentaminen
Rakenna ohjelma vaiheissa
Vaihe 1 : Pelkkä ikkuna
Toimivaa ohjelmaa varten sinun täytyy
- Luoda sovellusolio
- Luoda ikkuna-olio (QWidget/QMainWindow) sopivalla otsikolla
- Aseta ikkuna näkyväksi
- Käynnistä tapahtumakuuntelija(mainloop, exec_)
älä siirry eteenpäin ennen kuin ohjelma toimii.
Vaihe 2 :Ikkuna ja TextArea
Toimivaa ohjelmaa varten sinun täytyy
- Luoda QTextEdit-olio
- Lisätä se ikkunaasi
- Poistaa ikkunan editoitavuus (setReadOnly -> True)
Katso että textedit ilmestyy näkyviin ja ettei sitä voi editoida
Vaihe 3 :Nappulat näkyviin
Toimivaa ohjelmaa varten sinun täytyy
- Asettaa ikkunaan sopiva layout manager (tässä vaikkapa Grid)
- Luoda tekstikenttä (QLineEdit) napit (QPushButton)
- Lisätä em. tekstikenttä ja napit
Katso että kaikki komponentit tulevat näkyviin
Vaihe 4 :Napit toimimaan
Toimivaa ohjelmaa varten sinun täytyy
- Luo lista, jossa nimiä säilytetään (lista saa tässä kuvata koko ohjelman logiikkaosaa)
- Lisätä nappeihin sopiva tapahtumankäsittelijä
- Tapahtumankäsittelijän tulee lukea tekstiriviltä nimi ja tapauksen mukaan joko lisätä tai poistaa se listasta. Tämän jälkeen sen tulee käydä lista läpi ja tulostaa sen sisältämät merkkijonot QTextEdit -komponenttiin.
- Ensimmäinen versio tapahtumankuntelijasta voi yksinkertaisesti tulostaa jonkin sanan, jotta tapahtumankuuntelijan lisääminen tulee ensin kokeiltua.
Suurin osa näistä asioista on sovellettavissa luentokalvojen viimeisen esimerkin kautta. Tutustu luentokalvoihin ja vaikka seuraavaan PyQt -tutorialiin
Valittuja PyQt Reference Quide:n alisivuja
- QtGui QtGui ja sen luokat
- QTextEdit QTextEdit luokan ja sen metodien kuvaus
- QLineEdit
- QPushButton