@@ -84,11 +84,14 @@ Dette er spesielle typer variabler som brukes sammen med *widgets*. Fordelen med
I tillegg til *StringVar* har vi *IntVar* og *BooleanVar* og *DoubleVar*. Hvis datatypen til tekstfeltet du bruker ikke er en streng, men for eksempel en *int*, lønner det seg å bruke *IntVar* istedet. Da slipper du å konvertere mellom tall og strenger. Sjekk ut *alder*-feltet i eksempelapplikasjonen som bruker en *IntVar*.
Prosessen er som følger:
* Vi oppretter en StringVar
* Vi *kan* sette en utgangsverdi på denne
* Vi oppretter en StringVar (`tekst = StringVar()`)
* Vi *kan* sette en utgangsverdi på denne (`teskt.set("Verdi")`)
* Så oppretter vi f.eks et tekstfelt med denne variabelen.
* Når en bruker f.eks trykker på en knapp kjøres det en funksjon. Da kan denne funksjonen bruke StringVar variabelen for å bruke innholdet av tekstfeltet.
* Tekstfelter (Entry). Et teksfelt opprettes gjerne med to linjer kode; en for å lage en StringVar som holder på innholdet og en for å lage tekstfeltet (tekst). Også her angir vi hvilket vindu det skal være i (root), i tillegg til hvilken StringVar som skal brukes:
```python
tekst = StringVar() # Definerer en tekstvariabel for tekstfeltet
tekstfelt = Entry(root, textvariable=tekst)
```
* Ledetekst (Label) En Label inneholder vanligvis en ledetekst og brukes gjerne foran et tekstfelt (Entry). En *Label* kan imidlertid også inneholde et bilde (dette gjøres i eksempelapplikasjonen). Her er et eksempel med ledeteksten "Søk: ":
```python
ledetekst = Label(root, text="Søk: ")
```
...
...
@@ -124,6 +130,7 @@ for element in elements:
```
* Nedrekksmeny (OptionMenu). En nedtrekksmeny trenger en StringVar for å holde på *valgt* verdi og en liste som angir hvilke valg som er mulige. Ofte vil det være aktuelt å hente denne listen fra en database.
```python
chosen = StringVar()
chosen.set("egg")
...
...
@@ -172,6 +179,8 @@ root.mainloop()

Rutenettet som ble brukt i dette eksempelet har t kolonner og to rader:

I tillegg kan vi si at det skal være 10 piksler foran og etter ledeteksten og 3 piksler over og under både ledeteksten og tekstfeltet:
...
...
@@ -197,7 +206,7 @@ Dere kan kjøre applikasjonen ved å ha *person_main.py* fremme i Thonny og så
* Sette inn eget brukernavn og passord helt øverst i filen *person_db.py*.
* Installere følgende biblioteker i Thonny hvis de ikke allerede er der: *matplotlib* og *numpy*.
Applikasjonen har 4 kodefiler. Kort oppsummert gjør de føløgende:
Applikasjonen har 4 kodefiler. Kort oppsummert gjør de følgende:
* *person_main.py*: Dette er hovedfilen i applikasjonen og det er denne vi må ha fremme i Thonny for å starte applikasjonen. Filen inneholder hovedvinduet i applikasjonen, med widget'er og funksjonene som skal kjøres når vi trykker på *Søk* eller velger menyfunksjoner.
* *person_edit.py*: Denne filen innholder vinduet vi bruker for å endre **en** person eller opprette en ny. Den har widget'er for navn, adresse, alder osv., og det er mulig å laste opp et bilde for hver person.
* *person_db.py*: Denne filen inneholder all databasefunksjonalitet i applikasjonen. Her finner vi funksjoner for å søke på personer, for å oppdatere, opprette og slette personer, og for å finne statistikk om personer.