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

Update gui.md

parent b0babe7d
No related branches found
No related tags found
No related merge requests found
......@@ -13,14 +13,6 @@
# Om leksjonen
Vi skal ikke gå i dybden på grafiske brukergrensesnitt, men dere skal lære de aller mest nødvendige mekanismene og deretter skal dere få en eksempelapplikasjon som dere kan bruke som utgangspunkt for oppgaven i denne leksjonen og gjerne i prosjektet.
```python
scrollbar = Scrollbar(root, orient=VERTICAL)
listbox = Listbox(root, yscrollcommand=scrollbar.set)
scrollbar.config(command=listbox.yview)
elements = ["egg","bacon","pølser"]
for element in elements:
listbox.insert(END, element)
```
# tkinter
......@@ -49,17 +41,18 @@ Når vi kjører denne applikasjonen skal vi få opp et lite vindu uten noe innho
# Hendelser
GUI-applikasjoner er bygd opp rundt *hendelser* (event).
Hva er en hendelse (event) og hva bruker vi de til.
Eksempler.
* Museklikk
Eksempler på hendelser:
* En bruker trykker på en knapp med musepekeren
* Tastatur-trykk
* Brukeren velger et meny-element
*
* En bruker trykker på en knapp ved hjelp av tastaturtrykk
* En bruker velger et meny-element med musa eller med tastetrykk
* En bruker dobbeltklikker i en liste
* En bruker velger et element i en liste med et enkelt trykk
* En bruker endrer innholdet i et tekstfelt
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 f.eks lage en knapp (Button) og si at funksjonen *update_data()* skal kjøres når vi trykker på den:
```python
knapp = Button(root, text="Oppdater", command=update_data)
......@@ -71,9 +64,14 @@ Da må denne funksjonen lages og vi må skrive koden som skal kjøres i funksjon
def update_data():
# Oppdater data i databasen
```
Vi kan lage et menyelement med en tekst("Se statistikk") og en funksjon (*view_statistics()*)som skal kjøres når dette velges av brukeren:
```python
menu.add_command(label="Se statistikk", command=view_statistics)
```
For knapper og menyelementer er det som regel bare en hendelse vi er interessert i, nemlig at brukeren velger dem, og derfor er det enkelt å definere hva som skal skje ved å bruke `command=?`.
I en listeboks kan det være flere typer hendelser vi er interessert i, f.eks dobbeltklikk. Vi kan *binde opp* hendelser til aksjoner med `bind(hendelse, funksjon)`. I eksempelet under sier vi at funksjonen `edit_person()` skal kjøres når vi dobbeltklikkier på et element i listeboksen. Dette eksempelet finner du også i eksempelapplikasjonen under.
I en listeboks kan det være flere typer hendelser vi er interessert i, f.eks dobbeltklikk. Da kan vi *binde opp* hendelser til aksjoner med `bind(hendelse, funksjon)`. I eksempelet under sier vi at funksjonen *edit_person()* skal kjøres når vi dobbeltklikkier på et element i listeboksen. Dette eksempelet finner du også i eksempelapplikasjonen under.
```python
result_listbox.bind('<Double-Button-1>', edit_person)
......@@ -115,6 +113,7 @@ ledetekst = Label(root, text="Søk: ")
* Menyer. En meny (Menu) kan inneholde flere meny-elementer med en kommando (command) for hvert element som peker på hvilken funksjon som skal kjøres når elementet velges. Se i *person_main.py* i eksempelprogrammet for å se hvordan vi lager disse.
* Lister (Listbox). Lister er litt mer kompliserte da vi gjerne trenger en *scrollbar*. Vi oppretter en *Scrollbar* og en *Listbox* hver for seg og knytter dem sammen. I tillegg må vi legge til elementene i lista en og en. Bruk eksempelapplikasjonen som utgangspunkt for å bruke disse da det er litt komplisert.
```python
scrollbar = Scrollbar(root, orient=VERTICAL)
listbox = Listbox(root, yscrollcommand=scrollbar.set)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment