Maven_super_28 - itnett/FTD02H-N GitHub Wiki
Utvikling av brukergrensesnitt (GUI - Graphical User Interface) handler om å lage den delen av en programvareapplikasjon som brukeren interagerer med. I denne delen skal vi utforske hvordan du kan utvikle enkle brukergrensesnitt med Python ved hjelp av Tkinter, som er et av de mest brukte bibliotekene for GUI-utvikling i Python.
Et brukergrensesnitt er det laget av applikasjonen som brukeren ser og interagerer med. Dette inkluderer vinduer, knapper, tekstbokser, menyer, og andre visuelle elementer som brukeren kan samhandle med.
Tkinter er det standard GUI-biblioteket som følger med Python. Det gir et enkelt grensesnitt for å lage grunnleggende GUI-applikasjoner.
La oss starte med å opprette et enkelt vindu i Tkinter.
import tkinter as tk
# Opprette hovedvinduet
vindu = tk.Tk()
vindu.title("Mitt første GUI")
# Kjøre hovedløkken
vindu.mainloop()
Forklaring:
-
tk.Tk()
oppretter hovedvinduet for applikasjonen. -
vindu.title("Mitt første GUI")
setter tittelen på vinduet. -
vindu.mainloop()
starter hovedløkken som holder vinduet åpent.
Widgets er byggeklossene i et GUI. Noen vanlige widgets inkluderer knapper, etiketter, tekstbokser, og lister.
Etiketter brukes til å vise tekst eller bilder i et GUI.
import tkinter as tk
vindu = tk.Tk()
vindu.title("Etikett Eksempel")
# Legge til en etikett
etikett = tk.Label(vindu, text="Hei, verden!", font=("Arial", 16))
etikett.pack() # Plasserer etiketten i vinduet
vindu.mainloop()
Forklaring:
-
tk.Label()
oppretter en etikett. -
pack()
plasserer etiketten i vinduet, som en enkel layout-manager.
Knapper er interaktive elementer som brukeren kan trykke på for å utføre en handling.
import tkinter as tk
def vis_hilsen():
etikett.config(text="Knappen ble trykket!")
vindu = tk.Tk()
vindu.title("Knapp Eksempel")
etikett = tk.Label(vindu, text="Trykk knappen nedenfor", font=("Arial", 16))
etikett.pack()
# Legge til en knapp
knapp = tk.Button(vindu, text="Trykk meg", command=vis_hilsen)
knapp.pack()
vindu.mainloop()
Forklaring:
-
tk.Button()
oppretter en knapp. -
command=vis_hilsen
angir hvilken funksjon som skal kalles når knappen trykkes.
Inndatafelt lar brukeren skrive inn tekst.
import tkinter as tk
def vis_inndata():
tekst = inndata.get()
etikett.config(text=f"Inndata: {tekst}")
vindu = tk.Tk()
vindu.title("Inndata Eksempel")
etikett = tk.Label(vindu, text="Skriv noe og trykk Enter", font=("Arial", 16))
etikett.pack()
# Legge til inndatafelt
inndata = tk.Entry(vindu)
inndata.pack()
# Koble inndata til knappen
knapp = tk.Button(vindu, text="Vis inndata", command=vis_inndata)
knapp.pack()
vindu.mainloop()
Forklaring:
-
tk.Entry()
oppretter et inndatafelt. -
inndata.get()
henter teksten som brukeren har skrevet inn.
I stedet for pack()
kan du bruke grid()
for mer kontrollert plassering av widgets.
import tkinter as tk
vindu = tk.Tk()
vindu.title("Grid Layout Eksempel")
# Bruke grid layout
tk.Label(vindu, text="Navn:").grid(row=0, column=0)
tk.Entry(vindu).grid(row=0, column=1)
tk.Label(vindu, text="Alder:").grid(row=1, column=0)
tk.Entry(vindu).grid(row=1, column=1)
tk.Button(vindu, text="Send inn").grid(row=2, columnspan=2)
vindu.mainloop()
Forklaring:
-
grid(row=x, column=y)
plasserer widgeten i et rutenett, hvorrow
angir radnummer ogcolumn
angir kolonnenummer.
Tkinter-applikasjoner er hendelsesstyrte, noe som betyr at de reagerer på brukerens interaksjoner som klikk eller tastetrykk.
Eksempel:
import tkinter as tk
def på_tastetrykk(event):
etikett.config(text=f"Tastetrykk: {event.keysym}")
vindu = tk.Tk()
vindu.title("Hendelsesstyrt Programmering")
etikett = tk.Label(vindu, text="Trykk en tast", font=("Arial", 16))
etikett.pack()
# Binder tastetrykk-hendelsen til funksjonen på_tastetrykk
vindu.bind("<KeyPress>", på_tastetrykk)
vindu.mainloop()
Forklaring:
-
vindu.bind("<KeyPress>", på_tastetrykk)
binder en hendelse (tastetrykk) til en funksjon (på_tastetrykk
), som kjøres hver gang hendelsen inntreffer.
La oss lage et enkelt prosjekt som kombinerer flere elementer: En kalkulator.
import tkinter as tk
def trykk(tall):
nåværende = inndata.get()
inndata.delete(0, tk.END)
inndata.insert(tk.END, nåværende + str(tall))
def beregn():
try:
resultat = eval(inndata.get())
inndata.delete(0, tk.END)
inndata.insert(tk.END, str(resultat))
except:
inndata.delete(0, tk.END)
inndata.insert(tk.END, "Feil")
def slett():
inndata.delete(0, tk.END)
vindu = tk.Tk()
vindu.title("Enkel Kalkulator")
inndata = tk.Entry(vindu, width=16, font=("Arial", 24), borderwidth=2, relief="solid")
inndata.grid(row=0, column=0, columnspan=4)
# Knappene på kalkulatoren
tall_knapper = [
'7', '8', '9',
'4', '5', '6',
'1', '2', '3',
'0'
]
rad = 1
kolonne = 0
for tall in tall_knapper:
tk.Button(vindu, text=tall, width=5, height=2, command=lambda t=tall: trykk(t)).grid(row=rad, column=kolonne)
kolonne += 1
if kolonne > 2:
kolonne = 0
rad += 1
# Operasjonsknapper
tk.Button(vindu, text="+", width=5, height=2, command=lambda: trykk('+')).grid(row=1, column=3)
tk.Button(vindu, text="-", width=5, height=2, command=lambda: trykk('-')).grid(row=2, column=3)
tk.Button(vindu, text="*", width=5, height=2, command=lambda: trykk('*')).grid(row=3, column=3)
tk.Button(vindu, text="/", width=5, height=2, command=lambda: trykk('/')).grid(row=4, column=3)
# Beregnings- og slettknapper
tk.Button(vindu, text="=", width=11, height=2, command=beregn).grid(row=5, column=0, columnspan=2)
tk.Button(vindu, text="C", width=11, height=2, command=slett).grid(row=5, column=2, columnspan=2)
vindu.mainloop()
Forklaring:
- Tallknapper: Lar brukeren trykke tall for å bygge uttrykk.
- Operasjonsknapper: Inkluderer operasjoner som addisjon, subtraksjon, multiplikasjon, og divisjon.
-
Beregningsknappen: Evaluates the expression using
eval()
and displays the result. - Slettknappen: Clears the input field.
-
Tilpass Utseendet: Utforsk stiler ved å bruke
ttk
modulen i Tkinter for mer moderne widgets. - **Legg til Men
yer:** Bruk Menu
klassen for å legge til menyer som fil, rediger, osv.
-
Legg til Dialogbokser: Bruk moduler som
tkinter.messagebox
for å vise meldinger eller få brukerinput. - Lag Kompleks GUI: Utforsk andre rammeverk som PyQt eller Kivy for mer avanserte GUI-applikasjoner.
Ved å forstå og implementere disse grunnleggende og mer avanserte teknikkene for brukergrensesnittutvikling, kan du lage intuitive og funksjonelle applikasjoner som brukerne enkelt kan interagere med. Hvis du ønsker mer hjelp med spesifikke aspekter eller prosjekter, er jeg her for å veilede deg videre!