37 Lihtne kasutajaliides EasyGUIga
Varem kasutasime kasutajaliidese loomiseks moodulit tkinter, kuid selleks on teisigi võimalusi. Seekord vaatame moodulit easygui, millega on kasutajaga suhtlemine lihtsam (kuigi vähem paindlik). Mooduli nimes sisalduv lühend GUI tähistab graafilist kasutajaliidest (ingl graphical user interface).
EasyGUI paigaldamine
Moodul EasyGUI ei ole osa Pythoniga vaikimisi kaasas olevatest moodulitest, seetõttu tuleb see esmalt paigaldada. Mooduli paigaldamiseks ava Thonny ning vali Tools (Tööristad) –> Manage packages… (Halda lisapakke…) –> otsida EasyGui –> valida easygui –> Install.
Nuppudega dialoogiaken
Esimese näitena teeme teatega dialoogiakna:
Näiteprogramm. Ühe nupuga dialoogiaken
from easygui import * # EasyGui kasutamiseks importida msgbox("Minu esimene graafiline kasutajaliides!!") # teateaken
Tulemus peaks välja nägema selline:
Sageli on vaja luua rohkem kui üks nupp. Järgmises näites on juba mitu nuppu:
Näiteprogramm. Mitme nupuga dialoogiaken
from easygui import * nupud = ["lihtne","ok","keeruline"] vajutati = buttonbox("Programmeerimine on ", choices = nupud) msgbox("Te arvate, et programmeerimine on " + vajutati + "!")
Kui kasutaja vajutab nuppu, siis
tagastab valiku teksti, mis salvestatakse muutujasse buttonbox
vajutati
. Kui kasutaja hoopis suleb dialoogiakna, siis tagastatakse None
.
Nüüd küsitakse nii:
Samuti näidatakse kasutaja valikut:
Järjendiga dialoogiaken
Kui valikuid on vähe ja nende tekstid on lühikesed, siis on nupud heaks võimaluseks. Pikemate tekstidega ja/või suurema hulga valikute korral võib olla mõistlikum valik järjendina esitada:
Näiteprogramm. Valik järjendina
from easygui import * variandid = ["minu lemmik","lihtne","ok","keeruline"] vajutati = choicebox("Programmeerimine on ", choices = variandid) if vajutati == None: msgbox("Te ei valinud midagi!") elif vajutati == "minu lemmik": msgbox("Programmeerimine on teie lemmik! Muidugi nii peakski olema!") else: msgbox("Te arvate, et programmeerimine on " + vajutati + ", hmm, väga huvitav!")
Nii saame järgmise dialoogiakna:
Kasutajalt andmete küsimine
Kasutajalt saab andmeid küsida funktsiooni
abil. Kui tahame täisarvulist vastust, siis on sobilik kasutada funktsiooni enterbox
, millele saab ette anda ülemise ja alumise piiri. Kui sisestatu ei mahu piiridesse, siis küsitakse uuesti.integerbox
Näiteprogramm. Vanuse küsimine
from easygui import * nimi = enterbox("Tere, kuidas on teie nimi?") vanus = integerbox("Kui vana te olete?", lowerbound = 1, upperbound = 120) if nimi == None or vanus == None or nimi == "": msgbox("Palun sisestage andmed korrektselt!") else: msgbox("Tere, " + str(vanus) + "-aastane " + nimi + "!")
Kasutajalt küsitakse kaks küsimust. Esimese puhul kasutatakse funktsiooni enterbox
:
Teise küsimuse korral kasutatakse funktsiooni integerbox:
Tulemus näidatakse msgbox
abil:
Veel EasyGUI-st
EasyGUI-l on veel võimalusi, näiteks saab lisada pilte. Julgesti võib uurida EasyGUI lehte.
Video
Vaata ka kokkuvõtvat videot.
Failitöötlus kasutajaliidesega
Lõpetuseks toome paar varianti varem uuritud failitöötluse programmidest, kus kasutame graafilist kasutajaliidest:
Näiteprogramm. Faili kirjutamine koos salvestamise aknaga
from easygui import * nimi = enterbox("Palun sisesta oma nimi: ") vanus = integerbox("Palun sisesta oma vanus: ", lowerbound = 1, upperbound = 120) aadress = enterbox("Palun sisesta oma aadress: ") failinimi = filesavebox() f = open(failinimi, "w") f.write(nimi + "\n") f.write(str(vanus) + "\n") f.write(aadress + "\n") f.close()
Näiteprogramm. Failist lugemine koos faili valimise aknaga
from easygui import * failinimi = fileopenbox() f = open(failinimi) nimi = f.readline().strip() vanus = f.readline().strip() aadress = f.readline().strip() f.close() tekst = "Nimi: " + nimi + "\n"+ "Vanus: " + vanus + " aastat\n" + "Aadress: " + aadress msgbox(tekst)