PythonPodcast 14 - itnett/FTD02H-N GitHub Wiki
Episode 14 – Avanserte Widgets og Flere Vinduer i Tkinter
Velkommen til Episode 14!
I denne episoden skal vi bygge videre på GUI-programmering med Tkinter. Vi skal utforske mer avanserte widgets (grensesnittkomponenter) og lære hvordan man kan håndtere flere vinduer i en applikasjon. Dette vil gi oss muligheten til å skape mer dynamiske og interaktive applikasjoner.
Oppsummering fra forrige episode
I forrige episode, Episode 13, lærte vi:
-
Hvordan lage et grunnleggende vindu med Tkinter.
-
Hvordan legge til knapper, tekstfelt, og håndtere brukerinput.
-
Hvordan håndtere hendelser som museklikk.
-
Hvordan lage en enkel kalkulator med GUI.
Dagens Agenda
-
Introduksjon til avanserte widgets i Tkinter.
-
Bruke frames for organisering av layout.
-
Håndtere flere vinduer i applikasjoner.
-
Praktisk oppgave: Lage en enkel flervindu-applikasjon.
-
Oppsummering og neste steg.
Avanserte Widgets i Tkinter
Tkinter tilbyr en rekke widgets utover bare knapper og tekstfelt. Noen av de avanserte og nyttige widgets vi skal se på inkluderer:
-
Checkbutton – lar brukeren velge mellom på og av (avkryssingsboks).
-
Radiobutton – lar brukeren velge ett alternativ fra en gruppe valg.
-
Scale – en glidebryter som lar brukeren velge en verdi innenfor et område.
-
Listbox – lar brukeren velge ett eller flere elementer fra en liste.
-
Scrollbar – en rullefelt for å bla gjennom lange innholdslister.
La oss se hvordan vi kan bruke noen av disse i praksis.
Eksempel: Checkbutton og Radiobutton
import tkinter as tk
Funksjon for å vise valgt kjønn
def vis_kjonn(): valg = kjonn.get() if valg == 1: label.config(text="Du valgte: Mann") else: label.config(text="Du valgte: Kvinne")
Opprett hovedvindu
vindu = tk.Tk() vindu.title("Checkbutton og Radiobutton")
Checkbutton
show_password = tk.IntVar() check = tk.Checkbutton(vindu, text="Vis passord", variable=show_password) check.pack()
Radiobutton for valg av kjønn
kjonn = tk.IntVar() radiobutton1 = tk.Radiobutton(vindu, text="Mann", variable=kjonn, value=1, command=vis_kjonn) radiobutton2 = tk.Radiobutton(vindu, text="Kvinne", variable=kjonn, value=2, command=vis_kjonn) radiobutton1.pack() radiobutton2.pack()
Label for å vise resultat
label = tk.Label(vindu, text="Velg kjønn") label.pack()
vindu.mainloop()
I dette eksemplet har vi to radioknapper som lar brukeren velge kjønn, og vi bruker en checkbutton for å la brukeren velge om de vil vise passord eller ikke. Når brukeren velger et alternativ, oppdateres teksten i Label-elementet.
Bruke Frames for Layout
Frames er en viktig komponent i Tkinter som lar oss organisere widgets i logiske grupper. Det gjør det lettere å bygge komplekse brukergrensesnitt med flere elementer.
Her er et eksempel på hvordan vi kan bruke frames:
import tkinter as tk
vindu = tk.Tk() vindu.title("Eksempel med Frames")
Øvre ramme (frame)
top_frame = tk.Frame(vindu) top_frame.pack()
Nedre ramme (frame)
bottom_frame = tk.Frame(vindu) bottom_frame.pack(side=tk.BOTTOM)
Knapper i de ulike rammene
knapp1 = tk.Button(top_frame, text="Knapp 1", fg="red") knapp1.pack(side=tk.LEFT)
knapp2 = tk.Button(top_frame, text="Knapp 2", fg="blue") knapp2.pack(side=tk.LEFT)
knapp3 = tk.Button(bottom_frame, text="Knapp 3", fg="green") knapp3.pack(side=tk.LEFT)
vindu.mainloop()
Her bruker vi to frames for å organisere knappene i to seksjoner i vinduet. Frames hjelper oss med å lage mer ryddige og strukturerte grensesnitt.
Håndtere Flere Vinduer i Tkinter
Noen ganger kan det være nyttig å ha flere vinduer åpne i en applikasjon. Dette kan vi enkelt gjøre i Tkinter ved å lage flere vinduer ved hjelp av Toplevel-klassen.
Her er et eksempel på hvordan du kan åpne et nytt vindu fra hovedvinduet:
import tkinter as tk
def nytt_vindu(): # Opprett et nytt vindu nytt = tk.Toplevel() nytt.title("Nytt Vindu") label = tk.Label(nytt, text="Dette er et nytt vindu") label.pack()
Hovedvindu
vindu = tk.Tk() vindu.title("Flere Vinduer")
Knapp for å åpne nytt vindu
knapp = tk.Button(vindu, text="Åpne nytt vindu", command=nytt_vindu) knapp.pack()
vindu.mainloop()
Her bruker vi Toplevel til å åpne et nytt vindu når brukeren trykker på knappen. Dette lar oss skape mer komplekse applikasjoner med flere funksjoner spredt over flere vinduer.
Praktisk Oppgave: En Enkel Flervindu-applikasjon
Nå skal vi lage en applikasjon der brukeren kan registrere informasjon i ett vindu og få resultatet vist i et annet vindu.
import tkinter as tk
def registrer_bruker(): # Hent inndata fra feltene navn = navn_felt.get() alder = alder_felt.get()
# Åpne et nytt vindu for å vise informasjonen
nytt_vindu = tk.Toplevel()
nytt_vindu.title("Registrert Informasjon")
info = tk.Label(nytt_vindu, text=f"Navn: {navn}\nAlder: {alder}")
info.pack()
Hovedvindu
vindu = tk.Tk() vindu.title("Brukerregistrering")
Navn og alder felt
navn_felt = tk.Entry(vindu, width=30) navn_felt.pack(pady=5) alder_felt = tk.Entry(vindu, width=30) alder_felt.pack(pady=5)
Knapp for å registrere bruker
knapp = tk.Button(vindu, text="Registrer", command=registrer_bruker) knapp.pack(pady=10)
vindu.mainloop()
Her lager vi en enkel brukerregistrering-applikasjon med to vinduer. Når brukeren trykker på knappen, åpnes et nytt vindu som viser informasjonen de har skrevet inn i hovedvinduet.
Oppsummering
I denne episoden har vi lært:
-
Hvordan bruke avanserte widgets som Checkbutton og Radiobutton.
-
Hvordan bruke frames for å organisere layouten i et vindu.
-
Hvordan håndtere flere vinduer ved å bruke Toplevel.
-
Vi laget en flervindu-applikasjon som registrerer brukerens informasjon.
Neste Episode
I neste episode skal vi utforske hvordan vi kan koble Tkinter-applikasjoner med