Skip to content
Snippets Groups Projects
Commit f3997bbe authored by Nils Tesdal's avatar Nils Tesdal
Browse files

Update gui.md

parent d4c78bb8
No related branches found
No related tags found
No related merge requests found
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
* [Tkinter](#tkinter) * [Tkinter](#tkinter)
* [Vinduer](#vinduer) * [Vinduer](#vinduer)
* [Hendelser](#hendelser) * [Hendelser](#hendelser)
* [Widgets](#widgets)
* [StringVar](#stringvar) * [StringVar](#stringvar)
* [Widgets](#widgets)
* [Grid](#grid) * [Grid](#grid)
* [Eksempelapplikasjon](#eksempelapplikasjon) * [Eksempelapplikasjon](#eksempelapplikasjon)
* [Oppgaver](#oppgaver) * [Oppgaver](#oppgaver)
...@@ -40,13 +40,15 @@ Når vi kjører denne applikasjonen skal vi få opp et lite vindu uten noe innho ...@@ -40,13 +40,15 @@ Når vi kjører denne applikasjonen skal vi få opp et lite vindu uten noe innho
# Hendelser # Hendelser
GUI-applikasjoner er bygd opp rundt *hendelser* (event).
Hva er en hendelse (event) og hva bruker vi de til. Hva er en hendelse (event) og hva bruker vi de til.
Eksempler. Eksempler.
* Museklikk * Museklikk
* En bruker trykker på en knapp med musepekeren * En bruker trykker på en knapp med musepekeren
* Tastatur-trykk * Tastatur-trykk
* Brukeren velger et meny-element
*
En hendelse kan utløse (trigge) en aksjon. Dette er det vi som bestemmer ved at vi forteller Python hva som skal skje ved gitte hendelser. En hendelse kan utløse (trigge) en aksjon. Dette er det vi som bestemmer ved at vi forteller Python hva som skal skje ved gitte hendelser.
Vi kan lage en knapp (Button) og si at funksjonen *update_data()* skal kjøres når vi trykker på den: Vi kan lage en knapp (Button) og si at funksjonen *update_data()* skal kjøres når vi trykker på den:
...@@ -69,19 +71,43 @@ I en listeboks kan det være flere typer hendelser vi er interessert i, f.eks do ...@@ -69,19 +71,43 @@ I en listeboks kan det være flere typer hendelser vi er interessert i, f.eks do
result_listbox.bind('<Double-Button-1>', edit_person) result_listbox.bind('<Double-Button-1>', edit_person)
``` ```
# StringVar
og IntVar og BooleanVar og DoubleVar
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.
Prosessen er som følger:
* Vi oppretter en StringVar
* Vi *kan* sette en utgangsverdi på denne
* 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.
Bruk eksempelapplikasjonen for å se hvordan dette gjøres i praksis.
# Widgets # Widgets
* Knapper (Button) * Knapper (Button). En knapp opprettes som regel med en linje kode som sier hvilket vindu det skal være i, hva som skal stå på knappen, og hvilken funksjon som skal kjøres når brukeren trykker på den:
* Tekstfelter (Entry) ```python
knapp = Button(root, text="Søk", command=vis_tekst)
```
* Tekstfelter (Entry). Et teksfelt opprettes gjerne med to linjer kode; en for å lage en StringVar som holder på innholdet og en for å lage tekstfeltet. Også her angir vi hvilket vindu det skal være i, 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 ogsp inneholde et bilde (dette gjøres i eksempelapplikasjonen) * Ledetekst (Label) En Label inneholder vanligvis en ledetekst og brukes gjerne foran et tekstfelt (Entry). En *Label* kan imidlertid ogsp inneholde et bilde (dette gjøres i eksempelapplikasjonen)
* Menyer. En meny (Menu) kan inneholde flere meny-elementer med en kommando for hvert element. * Menyer. En meny (Menu) kan inneholde flere meny-elementer med en kommando for hvert element.
* Lister (Listbox) * Lister (Listbox)
* Nedrekksmeny (OptionMenu) * Nedrekksmeny (OptionMenu)
# StringVar ```python
chosen = StringVar()
bla bla chosen.set("egg")
options = ["egg","bunny","chicken"]
nedtrekksmeny = OptionMenu(root, chosen, *options) # Merk stjerna foran listevariabelen
```
# Grid # Grid
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment