reede, 10. mai 2019

Python - graafiline kasutajaliides

Esmalt lae siit alla fail nimega easygui.py ja salvesta see oma kausta kooli arvutivõrgus.
NB! See fail peab olema nende pythoni programmi failidega, mis seda funktsiooni kasutavad, samas kaustas!

Easygui funktsiooni kasutava programmi puhul tuleb funktsioon esmalt importida (nagu ka turtle funktsiooniga tegime).

from easygui import *

Graafilisel kasutajaliidesel on teateaken, mida kirjeldatakse funktsiooniga msgbox

Katseta programmi:

from easygui import *

msgbox("Kui näed seda akent, klõpsa OK")

Funktsioon buttonbox kuvab aknakese, milles on nupud ja mis registreerib nende nuppude vajutamise. Nuppudele ilmuvad kirjad saab funktsioonile ette anda muutujaga choices

Katseta programmi:

from easygui import *

buttonbox("Tahad programmeerimist õppida?", choices = ("JAH", "EI"))

Kui me soovime, et programm ka kasutaja valikule kuidagi reageeriks, siis tuleks nupuvajutus muutujasse salvestada (allolevas näites salvestatakse kasutaja tehtud valik muutujasse nimega valik).
Kolmandas reas anname kasutajale tema valikust teada msgbox funktsiooni kasutades.

from easygui import *

valik=buttonbox("Tahad programmeerimist õppida?", choices = ("JAH", "EI"))
msgbox("Sinu valik oli "+valik)

Võime vastamise teha ka valikust sõltuvaks, selleks saame kasutada tingimuslauset if ... else

from easygui import *
valik=buttonbox("Tahad programmeerimist õppida?", choices = ("JAH", "EI"))
if valik == "JAH":
    msgbox("Tore, et sulle meeldib programmeerimist õppida!")
elif valik == "EI":
    msgbox("Kahju!")
else:

    msgbox("Kas soovid akna sulgeda?") #Seda kuvatakse juhul, kui kasutaja proovib akent ristist sulgeda

Kasutajalt saab andmeid küsida enterbox abil.

from easygui import *

nimi=enterbox("Mis su nimi on?")

msgbox("Sinu nimi on: "+nimi)

Kui soovid küsida kasutajalt ainult arvu, siis saad kasutada funktsiooni integerbox. Siin on võimalik anda ette ka piirid, mille vahele vastus peab jääma (kui kirjutada piiridest väljaspoole jääv vastus, siis antakse sellest teada ja küsitakse uuesti).

vanus = integerbox("Kui vana te olete?", lowerbound = 1, upperbound = 100)


Ülesanne 19

Täienda tunni jooksul tehtud katsetusi nii, et saaksid kasutajaliidese, mis küsib kasutaja nime ja vanust ning väljastab teate "Tere, <nimi>! Oled <vanus> aastane!"

Ülesanne 20

Loo kasutajaliides (võid kasutada ühel varasemal tunnil valminud matemaatika programmi), kus kasutaja saab sisestada 2 arvu (kaks integerbox'i) ning edasi valida, millise tehte ta nendega teeb (liidab, lahutab, korrutab või jagab). Edasi kuvatakse talle teade, kus on toodud arvud, nendega tehtud tehe ja vastus.
Näiteks:

NB! Selleks, et jagamisel kuvataks lõpmatute kümnendmurdude puhul vastuses näiteks ainult 2 komakohta, tuleb kasutada funktsiooni round
round(arv1/arv2,2) - jagatis ümardatakse sajandikeni (2 kohta peale koma).

Ülesanne edasijõudnutele

Uuri alloleval lingil olevat näidet pildi lisamise kohta buttonbox'i. Otsi internetist sobiv pilt ja programmeeri vastav liides näiteks küsimusega, kas pilt meeldib või mitte (nupud) ning vastus erinevatele valikutele (näiteks: "Tore, et pilt sulle meeldib!", "Kahju, et pilt ei meeldinud" vms).

http://easygui.sourceforge.net/tutorial.html#how-to-show-an-image-in-a-buttonbox