Etiketter og input-bokser
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)
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.