Arvutiteaduse instituut
  1. Kursused
  2. 2024/25 kevad
  3. Programmeerimise alused (MTAT.03.236)
EN
Logi sisse

Programmeerimise alused 2024/25 kevad

  • Pealeht
  • 1. Sissejuhatus
  • 2. Tingimuslause
  • 3. Tsükkel
  • 4. Järjend
  • 5. Funktsioon
  • 6. Andmevahetus. Lihtne kasutajaliides
  • Loengud
  • Moodle
  • Lahendus
  • Thonny paigaldamine
  • Thonny logide esitamine
  • Silumine
  • Kiireksamist
  • Viited
< eelmine6. nädala sisukordjärgmine >

6.4 Lihtne kasutajaliides EasyGuiga

LIHTNE KASUTAJALIIDES. MOODUL EasyGui

https://programmeerimine.cs.ut.ee/easygui.html https://courses.cs.ut.ee/2015/itp/fall/Main/Before8

Seni oleme teinud selliseid programme, kus kasutaja on vastused sisestanud tekstina käsureaaknas. Kui vaatame igapäevaselt kasutatavaid programme, siis toimub kasutajalt info saamine nuppude, hiire liikumise ja nupuvajutuste ja mitmete muude mugavate vahenditega. Kuna nende puhul on tegemist graafilise lahendusega, siis öeldakse, et programm on graafilise kasutajaliidesega (ingl graphical user interface, GUI).

Meie alustame graafiliste kasutajaliideste tegemist mooduli EasyGUI abil. Thonnys installeerimine: Tools --> Manage packages --> easygui --> Install. Kui eelpool kirjeldatud viisil ei õnnestu moodulit installida, siis proovi teisel viisil. Vali Thonny menüüst Tools --> Open system shell ja seal kirjuta käsureale pip install easygui

Esimese näitena teeme teatega dialoogiakna.

from easygui import * # EasyGui kasutamiseks importida

msgbox("Minu esimene graafiline kasutajaliides!!") # teateaken

Tulemus peaks välja nägema selline.

See on lihtsaim dialoogiaken. Sageli on aga vaja kasutajale rohkem võimalusi anda, kui ainult OK vajutada. Järgmises näites on juba mitu nuppu.

from easygui import buttonbox, msgbox

nupud = ["lihtne", "ok", "keeruline"]
vajutati = buttonbox("Programmeerimine on", choices=nupud)

if vajutati:
    msgbox(f"Te arvate, et programmeerimine on {vajutati}!")

Nüüd siis küsitakse nii.

Samuti näidatakse ka kasutaja valikut.

Kui kasutaja vajutab nuppu, siis buttonbox() tagastab valiku teksti, mis salvestatakse muutujasse vajutati. Kui kasutaja hoopis suleb dialoogiakna, siis tagastatakse None.

Kui valikuid on vähe ja nende tekstid on lühikesed, siis on nupud heaks võimaluseks. Pikemate tekstidega ja/või suurema hulga valiku korral võib olla mõistlikum valik järjendina esitamine.


from easygui import choicebox, msgbox

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(f"Te arvate, et programmeerimine on {vajutati}, hmm, väga huvitav!")

Nii saame järgmise dialoogiakna.

Nüüd on järgmise akna tekst vastavalt vastusele kokku pandud.

KASUTAJA SISESTAB ANDMEID

Kasutajalt saab andmeid küsida funktsiooni enterbox abil. Kui tahetakse täisarvulist vastust, siis võiks kasutada funktsiooni integerbox. Sellele saab ette anda ülemise ja alumise piiri. Kui sisestatu ei mahu piiridesse, siis küsitakse uuesti.


from easygui import enterbox, integerbox, msgbox

nimi = enterbox("Tere! Kuidas on teie nimi?")

if nimi == None:  # Kontrollib, kas nimi on tühi või kasutaja vajutas "Cancel"
    msgbox("Palun sisestage oma nimi korrektselt!")
else:
    vanus = integerbox("Kui vana te olete?", lowerbound=1, upperbound=120)

    if vanus == None:  # Kontrollib, kas vanus jäeti tühjaks või "Cancel" vajutati
        msgbox("Palun sisestage oma vanus korrektselt!")
    else:
        msgbox(f"Tere, {vanus}-aastane {nimi}!")

Kasutajalt küsitakse kaks küsimust. Esimese puhul kasutatakse funktsiooni enterbox

ja teise puhul funktsiooni integerbox.

Tulemus näidatakse msgbox abil.

EasyGuil on veel võimalusi. Näiteks saab lisada pilte. Julgesti võib iseseisvalt edasi uurida EasyGui lehelt.

Vaata ka kokkuvõtvat videot:

EELMISTE OSADE PROGRAMMID KASUTAJALIIDESEGA

Lõpetuseks toome mõne selle nädala varasema näite graafilise kasutajaliidesega variandi.

Faili kirjutamise programm koos faili salvestamise aknaga

from easygui import enterbox, integerbox, filesavebox

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", encoding="UTF-8")
f.write(f"{nimi}\n")
f.write(f"{vanus}\n")
f.write(f"{aadress}\n")
f.close()

Failist lugemise programm koos faili valimise aknaga

from easygui import fileopenbox, msgbox

failinimi = fileopenbox()
f = open(failinimi, encoding = "UTF-8")
nimi = f.readline().strip()
vanus = f.readline().strip()
aadress = f.readline().strip()
f.close()

tekst = f"Nimi: {nimi}\nVanus: {vanus} aastat\nAadress: {aadress}"

msgbox(tekst)

Google'i otsingu programm, mis avab ka lingi veebilehitsejas

import json, urllib.request, urllib.parse, easygui, webbrowser

def google(otsingusõna):

    päring = "q=" + otsingusõna 
    url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&" + päring
    otsing = urllib.request.urlopen(url)
    otsinguTulemused = otsing.read().decode("utf8")
    tulemused = json.loads(otsinguTulemused)
    andmed = tulemused['responseData']

    ## üldised andmed
    tulemus = "Kokku tulemusi: " + andmed["cursor"]["resultCount"] + "\n"
    tulemus += "Aega kulus: " + andmed["cursor"]["searchResultTime"] + "\n"
    tulemus += "\n"

    ## leitud vasted pannakse järjendisse
    tulemus += "Tulemused: "
    leiud = andmed["results"]
    valikud = []
    for leid in leiud:
        valikud += [leid["url"]]

    ## tulemused näidatakse ekraanile
    vajutati = easygui.buttonbox(tulemus, choices = valikud)

    ## valitud link avatakse veebilehitsejas
    webbrowser.open(vajutati)

## Otsing
otsingusõna = easygui.enterbox('Sisesta otsingusõna: ')
google(otsingusõna)

< eelmine6. nädala sisukordjärgmine >
  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused