Etiketter

Vi kan legge inn etiketter i et vindu, ved hjelp av tkinter-funksjonen Label(). Vi kan legge inn en Label i et vindu uten å gi den et navn, dersom vi ikke trenger å kalle opp dette objektet igjen. Denne koden vil opprette et objekt og plassere det, men vi vil ikke kunne endre på teksten i etterkant, fordi objektet ikke har navn.

import tkinter as tk
main = tk.Tk()
tk.Label(main, text="Her er teksten").grid(row=0,column=0)

main.mainloop()

Dersom man setter et navn på objektet, så kan man i ettertid gå inn og endre på hva som står på den.

import tkinter as tk
main = tk.Tk()
lbl_tekst = tk.Label(main, text="Her er teksten!")
lbl_tekst.grid(row=0,column=0)

lbl_tekst.configure(text="Ny tekst!")
main.mainloop()

I denne koden ser man hvordan etiketten får et navn, og da kan man i ettertid gå inn å endre på egenskaper som f eks text. Dersom man gir objektet et navn, så må .grid stå i en egen linje.

Input-bokser

Vi ønsker jo selvsagt at brukeren skal kunne legge inn en tekst eller verdi. Da er det praktisk å bruke funksjonen Entry() fra tkinter. Dette oppretter en liten tekst-boks der brukeren kan legge inn en verdi. Denne verdien ønsker man jo å benytte i ettertid, så derfor er det lurt å gi tekstboksen et navn. Sjekk denne koden, og se om den gir mening:

import tkinter as tk
main = tk.Tk()
lbl_tekst = tk.Label(main, text="Her er teksten!")
lbl_tekst.grid(row=0,column=0)
ent_fnavn = tk.Entry(main)
ent_fnavn.grid(row=0,column=1)

main.mainloop()

På denne måten, kan jeg få tak i hva brukeren har skrevet, ved hjelp av funksjonen get().

fornavn = ent_fnavn.get()

Se på koden til dette programmet, og se om det gir mening:

import tkinter as tk

main = tk.Tk()
main.title("Konverterer")
main.geometry("430x200")

def fun_kmh2ms():
    kmh = int(ent_kmh.get())
    ms = round(kmh / 3.6, 1)
    output = str(kmh) + "km/h = " + str(ms) + "m/s"
    lbl_ms.configure(text=output)

tk.Label(main, text="Antall km/h").grid(row=0, column=0,padx=5,pady=5)
ent_kmh = tk.Entry(main)
ent_kmh.grid(row=0, column=1, padx=5, pady=5)
lbl_ms = tk.Label(main, text="0 km/h = 0 m/s")
lbl_ms.grid(row=0, column=2)
tk.Button(main,text="Regn ut", command=fun_kmh2ms).grid(column=1, row=1)

main.mainloop()

Oppgave

a)
Kopier koden over, og legg inn kommentarer som forklarer koden!

b)

Dette programmet kan bygges ut med flere tekstbokser, og flere knapper!


Legg inn en linje til i programmet med tilhørende knapp som regner fra m/s til km/h.

c)
Legg til 2 nye linjer i programmet med tilhørende knapper, der brukeren kan gjøre om km/h til mph (miles per hour) og motsatt. Tips: dele og gange med 1,6.