Tkinter er et grafisk brukergrensesnitt (GUI) -verktøy som du bør prøve hvis du vil utforske kraften til Python når du oppretter skrivebordsprogrammer.

Her ser vi på det grunnleggende i Tkinter GUI-modulen.

Tkinter-oppsett

Vanligvis trenger du ikke å installere tkinter separat hvis du har installert en senere versjon av Python, og starter med Python 3. Biblioteket fungerer kanskje ikke med gamle Python-versjoner. Dette er et vanlig problem for Mac- og Linux-brukere, da disse operativsystemene vanligvis kommer med eldre versjoner av Python som standard.

Vanligvis å bruke tkinter modulen, sørg for at du laster ned og installerer den nyeste kompatible versjonen av Python på din PC fra den offisielle python.org nettsted.

Hvis du bruker Mac, kan du alternativt laste ned den nyeste versjonen av ActiveTcl, a tkinter kompilator fra ActiveState.

Hvordan bruke Tkinter

Tkinter er avhengig av den innebygde TK klasse. Og den innpakker alle hendelsene i GUI i en mainloop. Dermed er den mainloop innpakning gjør din tkinter kode kjørbar.

instagram viewer

Å komme i gang med tkinter:

fra tkinter import Tk
Tk (). Mainloop ()

Å kjøre koden over spinner tomt opp tkinter ramme.

Tilpasningsfunksjonene til Tkinter er imidlertid i de innebygde widgetene.

For å bruke disse widgetene kan du importere dem fra tkinter ved å erstatte fra tkinter import Tk med:

fra tkinter import *
t = Tk ()
t.mainloop ()

Du kan også justere vindusstørrelsen med geometri funksjonen og spesifiser deretter en tittel ved hjelp av tittel widget av tkinter:

t = Tk ()
t.geometry ("600x600")
t.title ("Tk Tutorial")
t.mainloop ()

Tkinter lar deg skrive vanlige tekster direkte til GUI ved hjelp av Merkelapp widget:

t = Tk ()
Etikett (t, tekst = "MUO Tkinter tutorial"). Rutenett ()
t.mainloop ()

De Nett() metoden er imidlertid et alternativ til pakke() metode. Den holder widgetene dine til GUI, og gjør dem synlige.

Du kan også spesifisere en skrift for din Merkelapp tekst:

t = Tk ()
Etikett (t, tekst = "MUO Tkinter tutorial", font = (60)). Rutenett ()
t.mainloop ()

Knapper er noen av de mest brukte widgetene i tkinter. Og du kan legge til disse klikkbare knappene i GUI-en ved hjelp av de forskjellige innebygde knapp-widgetene.

Slik legger du til en primærknapp i GUI-en din ved hjelp av Knapp widget:

t = Tk ()
Knapp (t, tekst = "klikkbar", bg = "svart", fg = "hvit"). Rutenett ()
t.mainloop ()

De bg og fg nøkkelord beskriver henholdsvis bakgrunnsfargen på knappen og fargen på teksten.

Du kan også justere dimensjonen på knappen ved å inkludere høyde og bredde parametere:

t = Tk ()
Knapp (t, tekst = "klikkbar", bg = "svart", fg = "hvit", høyde = "2", bredde = "10"). Rutenett ()
t.mainloop ()

Her er resultatet for det:

Og hvis du vil gjøre knappen mer visuelt tiltalende, kan du inkludere en lettelse nøkkelordet og juster deretter kantbredden:

t = Tk ()
Knapp (t, tekst = "Klikkbar", bg = "blå", fg = "hvit",
høyde = 2, bredde = 10, relieff = HØYT, kantbredde = 6) .gitter ()
t.mainloop ()

Og det ser slik ut:

Erstatte OPPVOKST med FLAT for å se hvordan det kommer gjennom.

Du kan legge til så mange knapper du vil. Men du må være forsiktig med å unngå innholdsoverlapping.

For å unngå overlapping kan du angi rad- og kolonneposisjonen for hver knapp:

t = Tk ()
Knapp (t, tekst = 1, bg = "svart", fg = "hvit"). Rutenett (rad = 1, kolonne = 1)
Knapp (t, tekst = 2, bg = "svart", fg = "hvit"). Rutenett (rad = 2, kolonne = 1)
Knapp (t, tekst = 3, bg = "svart", fg = "hvit"). Rutenett (rad = 3, kolonne = 1)
Knapp (t, tekst = 4, bg = "svart", fg = "hvit"). Rutenett (rad = 4, kolonne = 1)
t.mainloop ()

En valgfri kommando søkeord, men legger til hendelser i Knapp widget. I hovedsak forankrer den en valgfri funksjon som håndterer visse hendelser når du klikker på en knapp.

Koden nedenfor multipliserer for eksempel verdien på hver knapp med 6 når du klikker på den. Og den er basert på en forhåndsdefinert funksjon:

def knapptrykk (r):
r = 6 * r
Merkelapp (t, tekst = r, font = (60)). Rutenett (rad = 5, kolonne = 2)
t = Tk ()
Knapp (t, tekst = 1, bg = "svart", fg = "hvit", bredde = 10, høyde = 2,
kommando = lambda: knapptrykk (1)). rutenett (rad = 1, kolonne = 1, pady = 6)
Knapp (t, tekst = 2, bg = "svart", fg = "hvit", bredde = 10,
kommando = lambda: knapptrykk (2)). rutenett (rad = 2, kolonne = 1, pady = 6)
Knapp (t, tekst = 3, bg = "svart", fg = "hvit", bredde = 10,
kommando = lambda: knapptrykk (3)). rutenett (rad = 3, kolonne = 1, pady = 6)
Knapp (t, tekst = 4, bg = "svart", fg = "hvit", bredde = 10,
kommando = lambda: knapptrykk (4)). rutenett (rad = 4, kolonne = 1, pady = 6)
t.mainloop ()

I koden ovenfor, trykk på knappen håndterer multiplikasjonshendelsen. De Knapp widget peker deretter på hendelsesbehandleren ved hjelp av en anonym lambda funksjon.

Og hvis du er bekymret for tøff nøkkelord, skiller det tydelig hver knapp over raden. Erstatter dette med padx skiller knappene over kolonnen. Og du kan bruke begge nøkkelordene samtidig for å skille knappene over begge aksene som du ønsker.

Når det er sagt, vil du ikke finne hjulet på nytt for hver knapp som du gjorde i forrige kode. Dette bremser utførelsestiden, pluss at det gjør koden din vanskelig å lese og begrense.

Men du kan bruk en for loop for å unngå denne repetisjonen.

Så her er en kortere og bedre versjon av koden ovenfor:

def knapptrykk (r):
r = 6 * r
Merkelapp (t, tekst = r, font = (60)). Rutenett (rad = 5, kolonne = 2)
t = Tk ()
a = [1, 4, 6, 7]
for jeg i en:
j = lambda y = i: knappetrykk (y)
Knapp (t, tekst = i, bg = "svart", fg = "hvit", bredde = 10, høyde = 2,
kommando = j). rutenett (rad = i, kolonne = 1, pady = 6)
t.mainloop ()

Menyknapper og merkeknapper

La oss videre utforske kraften til til loop for å legge til menyknapper i GUI:

fra tkinter import *
t = Tk ()
buttons = ["Files", "Dashboard", "Menu", "Settings", "Help"]
m = 0
for jeg innen rekkevidde (len (knapper)):
# Få hver tekst i knappearrisen ved å bruke en listeindeks når m øker.
# La så kolonnen øke med 1 gjennom lengden på matrisen:

Menyknapp (t, tekst = knapper [m], bg = "blå", fg = "hvit"). Rutenett (rad = 5, kolonne = i)
m + = 1
t.mainloop ()

Å legge til avkrysningsknapper i GUI er også ganske enkelt:

t = Tk ()
Kontrollknapp (t, tekst = "Velg alternativ"). Rutenett ()
t.mainloop ()

Multipliser gjerne den avkrysningsknappen ved hjelp av til loop, som vi gjorde tidligere.

De Meny med widgeten kan du designe klikkbare rullegardinmenyer i tkinter.

Som nevnt tidligere, tkinter tilbyr mange widgetalternativer. Og du vil bruke noen av dem mens du designer rullegardinmenyen.

Her er noen av de vanlige widgetalternativene du kommer over mens du lager en rullegardinmeny:

  • add_cascade: Den viser en menyetikett og holder den der den hører hjemme.
  • add_separator: Den avgrenser undermenyer og grupperer dem i øvre og nedre undermenyer.
  • add_command: Det er her du gir undermenyen et navn. Til slutt aksepterer det et kommandoargument der du kan spesifisere en hendelsesbehandler.

Her er et rullegardineksempel som bruker disse tre alternativene:

fra tkinter import *
t = Tk ()
fileOptions = ["Ny", "åpen", "Lagre", "Lagre som"]
fileOptionsAfterseparator = ["Import", "Export", "Exit"]
viewOptions = ["Transform", "Edit", "Create"]
menuBar = Meny (t)
file = Menu (menylinje, tearoff = 0)
for jeg i filalternativer:
file.add_command (label = i, command = None)
file.add_separator ()
for i i fileOptionsAfterseparator:
file.add_command (label = i, command = None)
menuBar.add_cascade (label = "File", menu = file)
Visning = Meny (menylinje, tekjøkken = 0)
for i inVisninger:
View.add_command (label = i, command = None)
menuBar.add_cascade (label = "View", menu = View)
t.config (meny = menylinje)
t.mainloop ()

Se hvordan det ser ut:

Tkinter Alternativer-meny

An Alternativmeny, i motsetning til Meny rullegardinmeny, bytter etiketten til et valgt alternativ.

Selv om du kan angi en standard etikettverdi for en alternativmeny, har den ingen etikett som standard.

I slekt: Python-prosjektideer som passer for nybegynnere

Slik oppretter du en alternativmeny i tkinter:

t = Tk ()
Omenu = StringVar () # sett variabeltypen for alternativene
Omenu.set ("MUO") # spesifiser en standardverdi for menyikonet
OptionMenu (t, Omenu, "MUO", "Amazon", "Tutorial"). Grid ()
t.mainloop ()

Bygg en gjenbrukbar skrivebordsapp med Tkinter

Tkinter tilbyr en rekke funksjoner som hjelper deg med å lage interaktive GUI-skrivebordsprogrammer. Selv om det kanskje ikke har mange fleksible forskjønningsfunksjoner som noen andre Python GUI-moduler, er det fortsatt et praktisk verktøy det er verdt å utforske. Og mens eksemplene her bare viser noen av de grunnleggende konseptene, tkinter tilbyr mer avanserte funksjoner som du kan prøve ut.

Når det er sagt, kan du bygge en GUI-stasjonær kalkulator, lage en mini-teksteditor eller til og med lage en GUI-skrivebordsprogram for å administrere varebeholdningene dine. Hvis du vil spre vingene dine og bli en grafisk GUI-major, kan du til og med sjekke ut andre GUI-moduler av Python.

E-post
GUI? Hva er et grafisk brukergrensesnitt?

Bruker du et GUI? Sjansen er stor fordi du bruker dem hver eneste dag.

Les Neste

Relaterte temaer
  • Programmering
  • Python
Om forfatteren
Idowu Omisola (88 artikler publisert)

Idowu brenner for alt smartteknologi og produktivitet. På fritiden leker han rundt med koding og bytter til sjakkbrettet når han kjeder seg, men han elsker også å bryte seg fra rutinen en gang i blant. Hans lidenskap for å vise folk veien rundt moderne teknologi motiverer ham til å skrive mer.

Mer fra Idowu Omisola

Abonner på vårt nyhetsbrev

Bli med på nyhetsbrevet vårt for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!

Klikk her for å abonnere