Tkinter är ett grafiskt användargränssnittsverktyg (GUI) som du bör prova om du vill utforska kraften i Python när du skapar skrivbordsappar.

Här tittar vi på grunderna i Tkinter GUI-modulen.

Tkinter-inställning

Vanligtvis behöver du inte installera tkinter separat om du har installerat en senare version av Python, börjar med Python 3. Biblioteket kanske inte fungerar med gamla Python-versioner. Detta är ett vanligt problem för Mac- och Linux-användare, eftersom dessa operativsystem vanligtvis kommer med äldre versioner av Python som standard.

Generellt, för att använda tkinter se till att du laddar ner och installerar den senaste kompatibla versionen av Python på din dator från den officiella python.org hemsida.

Om du använder Mac kan du alternativt ladda ner den senaste versionen av ActiveTcl, a tkinter kompilator från ActiveState.

Hur man använder Tkinter

Tkinter beror på dess inbyggda TK klass. Och det slår samman alla händelser inom GUI i en mainloop. Således är den mainloop omslag gör din tkinter kod körbar.

instagram viewer

Att komma igång med tkinter:

från tkinter importera Tk
Tk (). Mainloop ()

Att köra koden ovan snurrar upp en tom tkinter ram.

Anpassningsfunktionerna i Tkinter finns dock i dess inbyggda widgets.

För att använda dessa widgets kan du importera dem från tkinter genom att ersätta från tkinter importera Tk med:

från tkinter import *
t = Tk ()
t.mainloop ()

Du kan också justera fönsterstorleken med geometri och ange sedan en titel med hjälp av titel widget av tkinter:

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

Med Tkinter kan du skriva vanliga texter direkt till GUI med hjälp av Märka widget:

t = Tk ()
Etikett (t, text = "MUO Tkinter tutorial"). Rutnät ()
t.mainloop ()

De rutnät() metoden är dock ett alternativ till packa() metod. Det håller dina widgets till GUI, vilket gör dem synliga.

Du kan också ange ett teckensnitt för din Märka text:

t = Tk ()
Etikett (t, text = "MUO Tkinter tutorial", font = (60)). Rutnät ()
t.mainloop ()

Knappar är några av de mest använda widgetsna i tkinter. Och du kan lägga till dessa klickbara knappar i ditt GUI med de olika inbyggda knappwidgetsna.

Så här lägger du till en primär knapp i ditt GUI med hjälp av Knapp widget:

t = Tk ()
Knapp (t, text = "Klickbar", bg = "svart", fg = "vit"). Rutnät ()
t.mainloop ()

De bg och fg nyckelord beskriver bakgrundsfärgen på knappen respektive färgen på texten i den.

Du kan också justera dimensionen på knappen genom att inkludera höjd och bredd parametrar:

t = Tk ()
Knapp (t, text = "Klickbar", bg = "svart", fg = "vit", höjd = "2", bredd = "10"). Rutnät ()
t.mainloop ()

Här är resultatet för det:

Och om du vill göra knappen mer tilltalande kan du inkludera en lättnad nyckelord och justera dess kantbredd:

t = Tk ()
Knapp (t, text = "klickbar", bg = "blå", fg = "vit",
höjd = 2, bredd = 10, lättnad = HÖJD, gränsbredd = 6). rutnät ()
t.mainloop ()

Och det ser ut så här:

Byta ut UPPFOSTRAD med PLATT för att se hur det kommer igenom.

Du kan lägga till så många knappar som du vill. Men var noga med att undvika innehållsöverlappning.

För att undvika överlappning kan du ange rad- och kolumnposition för varje knapp:

t = Tk ()
Knapp (t, text = 1, bg = "svart", fg = "vit"). Rutnät (rad = 1, kolumn = 1)
Knapp (t, text = 2, bg = "svart", fg = "vit"). Rutnät (rad = 2, kolumn = 1)
Knapp (t, text = 3, bg = "svart", fg = "vit"). Rutnät (rad = 3, kolumn = 1)
Knapp (t, text = 4, bg = "svart", fg = "vit"). Rutnät (rad = 4, kolumn = 1)
t.mainloop ()

En valfri kommando nyckelord lägger dock till händelser i Knapp widget. I grunden förankrar den en valfri funktion som hanterar vissa händelser när du klickar på en knapp.

Koden nedan multiplicerar till exempel värdet på varje knapp med 6 när du klickar på den. Och det är baserat på en fördefinierad funktion:

def knapptryckning (r):
r = 6 * r
Etikett (t, text = r, font = (60)). Rutnät (rad = 5, kolumn = 2)
t = Tk ()
Knapp (t, text = 1, bg = "svart", fg = "vit", bredd = 10, höjd = 2,
kommando = lambda: knapptryckning (1)). rutnät (rad = 1, kolumn = 1, pady = 6)
Knapp (t, text = 2, bg = "svart", fg = "vit", bredd = 10,
kommando = lambda: knapptryckning (2)). rutnät (rad = 2, kolumn = 1, pady = 6)
Knapp (t, text = 3, bg = "svart", fg = "vit", bredd = 10,
kommando = lambda: knapptryckning (3)). rutnät (rad = 3, kolumn = 1, pady = 6)
Knapp (t, text = 4, bg = "svart", fg = "vit", bredd = 10,
kommando = lambda: knapptryckning (4)). rutnät (rad = 4, kolumn = 1, pady = 6)
t.mainloop ()

I ovanstående kod, knapptryckning hanterar multiplikationshändelsen. De Knapp widget pekar sedan på den händelsehanteraren med en anonym lambda fungera.

Och om du är orolig för pady nyckelord, det skiljer tydligt varje knapp över raden. Ersätter detta med padx separerar knapparna över kolumnen. Och du kan använda båda nyckelorden samtidigt för att separera knapparna över båda axlarna som du vill.

Med det sagt vill du inte uppfinna hjulet för varje knapp som du gjorde i föregående kod. Detta fördröjer exekveringstiden, plus det gör din kod svår att läsa och begränsa.

Men du kan använd en for loop för att undvika denna upprepning.

Så här är en kortare och bättre version av ovanstående kod:

def knapptryckning (r):
r = 6 * r
Etikett (t, text = r, font = (60)). Rutnät (rad = 5, kolumn = 2)
t = Tk ()
a = [1, 4, 6, 7]
för jag i en:
j = lambda y = i: knapptryckning (y)
Knapp (t, text = i, bg = "svart", fg = "vit", bredd = 10, höjd = 2,
command = j) .grid (rad = i, kolumn = 1, pady = 6)
t.mainloop ()

Menyknappar och kontrollknappar

Låt oss vidare utforska kraften i för loop för att lägga till menyknappar i ditt GUI:

från tkinter import *
t = Tk ()
buttons = ["Files", "Dashboard", "Menu", "Settings", "Help"]
m = 0
för jag inom räckvidd (len (knappar)):
# Få varje text i knappmatrisen med hjälp av ett listindex när m ökar.
# Låt sedan kolumnen öka med 1 genom längden på matrisen:

Menyknapp (t, text = knappar [m], bg = "blå", fg = "vit"). Rutnät (rad = 5, kolumn = i)
m + = 1
t.mainloop ()

Att lägga till kontrollknappar i ditt GUI är också ganska enkelt:

t = Tk ()
Kontrollknapp (t, text = "Välj alternativ"). Rutnät ()
t.mainloop ()

Multiplicera gärna den här knappen med hjälp av för loop, som vi gjorde tidigare.

De Meny med widgeten kan du utforma klickbara rullgardinsmenyer i tkinter.

Som tidigare nämnts, tkinter erbjuder många widgetalternativ. Och du kommer att använda några av dem när du utformar din rullgardinsmeny.

Här är några av de vanliga widgetalternativen du kommer att stöta på när du gör en rullgardinsmeny:

  • add_cascade: Den visar en menyetikett och sticker den där den tillhör.
  • add_separator: Den avgränsar undermenyer och grupperar dem i övre och nedre undermenyer.
  • add_command: Det är här du ger din undermeny ett namn. I slutändan accepterar det ett kommandoargument där du kan ange en händelsehanterare.

Här är ett dropdown-exempel som använder dessa tre alternativ:

från tkinter import *
t = Tk ()
fileOptions = ["Ny", "öppen", "Spara", "Spara som"]
fileOptionsAfterseparator = ["Importera", "Exportera", "Avsluta"]
viewOptions = ["Transform", "Edit", "Create"]
menuBar = Meny (t)
fil = Meny (menyfält, tearoff = 0)
för jag i filalternativ:
file.add_command (label = i, command = None)
file.add_separator ()
för i i fileOptionsAfterseparator:
file.add_command (label = i, command = None)
menuBar.add_cascade (label = "File", menu = file)
Visa = Meny (menuBar, tearoff = 0)
för i in viewAlternativ:
View.add_command (label = i, command = None)
menuBar.add_cascade (label = "View", menu = View)
t.config (meny = menyfält)
t.mainloop ()

Se hur det ser ut:

Tkinter-alternativmeny

En Alternativmeny, till skillnad från Meny rullgardinsmeny, byter etikett till ett valt alternativ.

Även om du kan ange ett standardetikettvärde för en alternativmeny har det ingen etikett som standard.

Relaterad: Python-projektidéer lämpliga för nybörjare

Så här skapar du en alternativmeny i tkinter:

t = Tk ()
Omenu = StringVar () # Ställ in variabeln för alternativen
Omenu.set ("MUO") # specificera ett standardvärde för menyikonen
OptionMenu (t, Omenu, "MUO", "Amazon", "Tutorial"). Rutnät ()
t.mainloop ()

Bygg en återanvändbar skrivbordsapp med Tkinter

Tkinter erbjuder en rad funktioner som hjälper dig att skapa interaktiva GUI-skrivbordsappar. Även om det kanske inte har många flexibla försköna funktioner som vissa andra Python GUI-moduler, är det fortfarande ett praktiskt verktyg som är värt att utforska. Och medan exemplen här bara visar några av de grundläggande begreppen, tkinter erbjuder mer avancerade funktioner som du kan prova.

Med det sagt kan du bygga en GUI-skrivbordskalkylator, skapa en minitextredigerare eller till och med skapa en GUI-skrivbordsapp för att hantera dina lager. Om du vill sprida dina vingar och bli en grafisk GUI-major kan du till och med kolla in andra GUI-moduler i Python.

E-post
GUI? Vad är ett grafiskt användargränssnitt?

Använder du ett GUI? Chansen är stor för att du använder dem varje dag.

Läs Nästa

Relaterade ämnen
  • Programmering
  • Pytonorm
Om författaren
Idowu Omisola (88 artiklar publicerade)

Idowu brinner för allt smart teknik och produktivitet. På fritiden leker han med kodning och växlar till schackbrädet när han är uttråkad, men han älskar också att bryta sig från rutinen då och då. Hans passion för att visa människor vägen runt modern teknik motiverar honom att skriva mer.

Mer från Idowu Omisola

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!

Klicka här för att prenumerera