Dette er spesielle typer variabler som brukes sammen med *widgets*. Fordelen med disse er at de blir automatisk oppdatert av Python når brukeren endrer innholdet av for eksempel et tekstfelt.
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
...
...
@@ -87,6 +87,8 @@ Bruk eksempelapplikasjonen for å se hvordan dette gjøres i praksis.
# Widgets
En *widget* er en GUI-element vi bruker for å vise frem data og/eller for å la brukeren legge inn data. Eksempler på disse er:
* Knapper (Button). En knapp opprettes som regel med en linje kode som sier hvilket vindu det skal være i (root), hva som skal stå på knappen ("Søk"), og hvilken funksjon som skal kjøres når brukeren trykker på den (vis_tekst):
* 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.
nedtrekksmeny=OptionMenu(root,chosen,*options)# Merk stjerna foran listevariabelen
```
Det finnes mange flere widgets man kan bruke. Det finnes også mange forskjellige biblioteker med forskjellige widgets, så utvalget er stort. For eksempel finnes det mange fine widgets for å la brukeren velge en dato. Bruke eventuelt nettet for å finne slike. Prøv f.eks et søk på `python date widget`.
# Grid
I eksempelkoden i forrige avsnitt mangler det noe. Vi har ikke *plassert* widget'ene i vinduet. Vi trenger derfor en kodelinje til per widget.