Gumbi, drsniki, menuji


Uporabo gummbov, izbirnih in potrditvenih gumbov, drsnikov, menuja in vnosa besedila kaže spodnji primer:
sphere()
def ButtonAction(b):
    print("Klik na gumb: ", b.text)
button( bind=ButtonAction, text='Klikni me!' )

def RadioAction(r):
    print(r.checked) # alternates
radio(bind=RadioAction, text='Izberi') # text to right of button

def C(r):
    print(r.checked) # alternates
checkbox(bind=C, text='Odkljukaj') # text to right of checkbox

scene.append_to_caption('\n\n')

def S(s):
    print(s.value)
slider( bind=S )

scene.append_to_caption('\n\n')

def MenuAction (m):
    print(m.selected, m.index)
menu( choices=['mačka', 'pes', 'konj'], bind=MenuAction )
scene.append_to_caption('    ')
def T(s):
    print(s.text, s.number)
winput( bind=T )

Te gradnike (gunbe, izbire, drsnike,..) dodaja program pod platnom in sicer od leve proti desni in od zgoraj navzdol. Desno od vsakega gumba je dodan presledek, da se gumbi ne dotikajo povsem. V bistvu jih dodaja pod podnaslovom (caption).
Če želimo med gradniki razmak, tega dodajamo z ukazom
scene.append_to_caption(' ')

Za vertikalni razmak pa dodamo vmes prazne vrstice z ukazom:
scene.append_to_caption('\n\n')

Privzeto so krmilni gradniki tako dodani podnaslovu pod platnom (torej našo sceno).
Gradniki se bodo tako dodajali eden pod drugim po vrstnem redu dodajanja. Če pa bi definirali
pos=scene.title_anchor , bi se ti gradniki pojavili nad platnom..

Ko kliknemo na gumb, izbiro ali kak drug gradnik, se izvede funkcija, ki smo jo s tem gradnikom povezali z ukazom bind


Gumbi

Gumbi imajo naslednje atribute:
pos Položaj oziroma sidro, h kateremu pripnemo gumb. Po tvorbi gumba tega ne moremo spreminjati.
text Besedilo na gumbu. Spreminjamo ga lahko tudi kasneje. Besedilo ima lahko tudi oznake html.
color To je barva besedila na gumbu. Lahko jo kadarkoli spreminjamo.
background To je barva ozadja na gumbu. Lahko jo kadarkoli spreminjamo.
bind Tu navajamo ime funkcije, ki bo klicana pri kliku na gumb. Po tvorbi gumba tega ne moremo več spreminjati.
disabled Če je ta lastnost True, bo gumb posivel in ne bo več aktiven. To lahko kadarkoli spremenimo.
delete() To v bistvu ni lastnost, pač pa metoda. Če je na primer B gumb, bo "B.delete()" gumb zbrisala z zaslona.


Izbirni gumbi (radio buttons)

Izbirne gumbe običajno podajamo v skupinah po dva ali več. Poskrbeti moramo, da je istočasno aktivna le ena izbira. Lastnosti izbirnih gumbov so naslednje:
pos Položaj oziroma sidro, h kateremu pripnemo gumb. Po tvorbi gumba tega ne moremo spreminjati.
text Besedilo, ki se pojavi desno ob izbirnem gumbu na gumbu. Spreminjamo ga lahko tudi kasneje. Besedilo ima lahko tudi oznake html.
bind Tu navajamo ime funkcije, ki bo klicana pri kliku na gumb. Po tvorbi gumba tega ne moremo več spreminjati.
checked Če je ta lastnost True, bo gumb poudarjen (izbran). To lahko kadarkoli spremenimo.
disabled Če je ta lastnost True, bo gumb posivel in ne bo več aktiven. To lahko kadarkoli spremenimo.
delete() To v bistvu ni lastnost, pač pa metoda. Če je na primer B gumb, bo "B.delete()" gumb zbrisala z zaslona.

Potrditveni gumbi (checkbox)

Lastnosti potrditvenih gumbov so naslednje:
pos Položaj oziroma sidro, h kateremu pripnemo gumb. Po tvorbi gumba tega ne moremo spreminjati.
text Besedilo, ki se pojavi desno ob izbirnem gumbu na gumbu. Spreminjamo ga lahko tudi kasneje. Besedilo ima lahko tudi oznake html.
bind Tu navajamo ime funkcije, ki bo klicana pri kliku na gumb. Po tvorbi gumba tega ne moremo več spreminjati.
checked Če je ta lastnost True, bo gumb poudarjen (izbran). To lahko kadarkoli spremenimo.
disabled Če je ta lastnost True, bo gumb posivel in ne bo več aktiven. To lahko kadarkoli spremenimo.
delete() To v bistvu ni lastnost, pač pa metoda. Če je na primer B gumb, bo "B.delete()" gumb zbrisala z zaslona.


Drsniki

pos Položaj oziroma sidro, h kateremu pripnemo drsnik. Po tvorbi drsnika tega ne moremo spreminjati.
vertical Če je True, bo drsnik postavljem navpično, sicer pa vodoravno (privzeto). Po tvorbi drsnika tega ne moremo več spreminjati.
bind Tu navajamo ime funkcije, ki bo klicana po spremembi dsrnika . Po tvorbi drsnika tega ne moremo več spreminjati.
min Minimalna vrednost na drsniku. Privzeto je enaka 0. Po tvorbi tega ne moremo več spreminjati.
max Maksimalna vrednost na drsniku. Privzeto je enaka 1. Po tvorbi tega ne moremo več spreminjati.
step Velikost koraka pri kliku ali vlečenju. Privzeta vrednost je 0.001*(max-min).
value Trenutna vrednost drsnika (med min in max). Vrednost lahko nastavljamo programsko ali pa z načimi premiki. Če vrednost spreminjamo programsko (slider.value = nekaj), se funkcija, povezana z bind, NE izvede, da ne bi prišlo do zmede.
length Dolžina drsnika. Privzeto je drsnik dolg 400 pikslov. Po tvorbi tega ne moremo več spreminjati.
width Širina drsnika. Privzeta vrednost je 10 pikslov. Po tvorbi tega ne moremo več spreminjati.
left Rob na levi strani drsnika. Privzeta in hkrati minimalna vrednost je 12 pikslov. Po tvorbi tega ne moremo več spreminjati.
right Rob na desni strani drsnika. Privzeta in hkrati minimalna vrednost je 12 pikslov. Po tvorbi tega ne moremo več spreminjati.
top Rob nad drsnikom. Privzeta vrednost je 0 va vodoravni drsnik in 8 za navpični drsnik. Po tvorbi tega ne moremo več spreminjati.
bottom Rob pod drsnikom. Privzeta vrednost je 0 va vodoravni drsnik in 8 za navpični drsnik. Po tvorbi tega ne moremo več spreminjati.
align Če je align enak 'left', bo drsnik prikazan na levi strani okna, če je enak 'right', bo drsnik na desni. Privzeto je 'none' . Po tvorbi tega ne moremo več spreminjati.
disabled Če je True, drsnik osivi in ni aktiven. To lahko kadarkoli spremenimo.
delete() Če je na primer drsniku ime S, bo S.delete() zbrisal drsnik z zaslona.


Menuji

Atributi menujev so naslednji:
pos Položaj oziroma sidro, h kateremu pripnemo menu. Po tvorbi menuja tega ne moremo spreminjati.
choices Seznam nizov, ki nastopajo v menuju, na primer ['pes', 'mačka', 'miška']. Ta seznam lahko spreminjamo tako, da podamo nov seznam nizov.
selected Izbrani niz, na primer 'mačka'. To lahko nastavimo programsko ali z našo izbiro v menuju.
index Položaj izbranega niza v seznamu izbir, začenši z indeksom 0. To lahko nastavimo programsko ali z našo izbiro v menuju.
bind Ime funkcije, ki bo klicana, ko izberemo postavko v menuju. Po tvorbi menuja tega ne moremo spreminjati.
disabled Če je True, menu osivi in ni aktiven. To lahko kadarkoli spremenimo.
delete() S to metodo zbrišemo menu z zaslona.


Vnosno polje za besedilo (winput)

Vnos besedila omogoča gradnik winput. Ta prikaže polje, v katerega lahko vnesemo številski izraz ali besedilo. Vnosno polje izberemo bodisi s klikom bodisi s tabulatorsko tipko. Ko pritisnemo tipko "Enter", se sproži na ta gradnik navezana funkcija.
pos Položaj oziroma sidro, h kateremu pripnemo vnosno polje. Po tvorbi polja tega ne moremo spreminjati.
bind Ime funkcije, ki naj se izvede, ko pritisnemo tipko "Enter". Po tvorbi polja tega ne moremo spreminjati.
prompt To je besedilo, prikazano levo od vnosnega polja. Če to polje zbrišemo, se zbriše tudi to besedilo.
type Privzeto je ta atribut "numeric", lahko pa je tudi "string". Če je numeričen vhod, lahko vtipkamo izraze, kot je 3+2*sqrt(5.2e4). Če je kaj narobe s takim izrazom, izpiše program napako in povezana funkcija ni klicana. Po tvorbi polja tipa ne moremo spreminjati.
width Širina vhodnega polja v pikslih. Privzeto je 100. Po tvorbi polja širine ne moremo spreminjati.
height Višina vhodnega polja v pikslih. Privzeto je 20. Po tvorbi polja višine ne moremo spreminjati.
text Besedilo, prikazano v vhodnem polju. Nastavljeno je programsko ali pa ga vtipkamo mi.
number Število ki je rezultat ocenitve uporabnikovega vtipkanega izraza, če je tip vhodnega polja numeričen (sicer pa je None). Če torej v numerično vhopdno polje W vtipkamo 3 + 5, , bo W.text enak '3 + 5' w.number pa bo enak 8.
disabled Če je True, bo vhodno polje posivelo in ne bo več aktivno.
delete() Ta metoda zbriše vhodno polje z zaslona.


Besedilo (wtext)

Objekt wtext (widget text) ni interaktiven, kot so drugi gradniki. Omogoča pa dinamično, programsko spreminjanje delov podnapisa, morda kot odgovor na neke druge interakcije.

pos Položaj oziroma sidro, h kateremu pripnemo vbesedilo. Po tvorbi besedila tega ne moremo spreminjati.
text Besedilo, prikazano v polju. Lahko ga programsko spreminjamo.
delete() Ta metoda zbriše besedilo z zaslona.


Kako gradnikom dodajamo atribute

Poleg spodaj nevedenih atributom lahko takim gradnikom dodajamo tudi lastne. Tako bi lahko imeli tri gumbe, ki bi bili vezani na isto funkcijo, vendar bi imeli različne atribute za identifikacijo: "id=1", "id=2" in"id=3". Ko bi bila funkcija klicana, bi lahko odločila, kaj narediti, na osnovi vrednosti atributa 'id'.

Položaj gradnikov

VPython nudi tri sidrne točke (sidra) za pripenjanje gradnikov s podajanjem gradnikovega atributa 'pos' na eno teh sider: