Tkinter is een grafische gebruikersinterface (GUI) toolkit die je moet uitproberen als je de kracht van Python wilt ontdekken bij het maken van desktop-apps.

Hier bekijken we de basis van de Tkinter GUI-module.

Tkinter-configuratie

Normaal gesproken hoeft u niet te installeren tkinter afzonderlijk als u een latere versie van Python hebt geïnstalleerd, te beginnen met Python 3. De bibliotheek werkt mogelijk niet met oude Python-versies. Dit is een veelvoorkomend probleem voor Mac- en Linux-gebruikers, omdat deze besturingssystemen meestal standaard met oudere versies van Python worden geleverd.

Over het algemeen, om de. te gebruiken tkinter module, zorg ervoor dat u de nieuwste compatibele versie van Python op uw pc downloadt en installeert vanaf de officiële python.org website.

Als u een Mac gebruikt, kunt u ook de nieuwste versie van ActiveTcl downloaden, a tkinter compiler van ActiveState.

Hoe Tkinter te gebruiken

Tkinter is afhankelijk van de ingebouwde TK klas. En het wikkelt alle gebeurtenissen in de GUI in een

instagram viewer
Hoofdlus. Dus de Hoofdlus wrapper maakt je tkinter code uitvoerbaar.

Om te beginnen met tkinter:

van tkinter import Tk
Tk().mainloop()

Als u de bovenstaande code uitvoert, wordt een lege pagina weergegeven tkinter kader.

De aanpassingsfuncties van Tkinter bevinden zich echter in de ingebouwde widgets.

Om deze widgets te gebruiken, kunt u ze importeren vanuit tkinter door te vervangen van tkinter import Tk met:

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

U kunt de venstergrootte ook aanpassen met de geometrie functie en geef vervolgens een titel op met de titel widget van tkinter:

t = Tk()
t.geometrie("600x600")
t.title("Tk-zelfstudie")
t.mainloop()

Met Tkinter kunt u platte teksten rechtstreeks naar de GUI schrijven met behulp van de Label widget:

t = Tk()
Label (t, tekst = "MUO Tkinter-zelfstudie").grid()
t.mainloop()

De rooster() methode is echter een alternatief voor de pak() methode. Het plakt je widgets aan de GUI, waardoor ze zichtbaar worden.

U kunt ook een lettertype opgeven voor uw Label tekst:

t = Tk()
Label (t, tekst = "MUO Tkinter-zelfstudie", font=(60)).grid()
t.mainloop()

Knoppen zijn enkele van de meest gebruikte widgets in tkinter. En u kunt deze klikbare knoppen aan uw GUI toevoegen met behulp van de verschillende ingebouwde knopwidgets.

Hier leest u hoe u een primaire knop aan uw GUI kunt toevoegen met behulp van de Knop widget:

t = Tk()
Knop (t, tekst = "Klikbaar", bg = "zwart", fg = "wit").grid()
t.mainloop()

De bg en fg trefwoorden beschrijven respectievelijk de achtergrondkleur van de knop en de kleur van de tekst erin.

U kunt de afmeting van de knop ook aanpassen door de hoogte en breedte parameters:

t = Tk()
Knop (t, tekst = "Klikbaar", bg = "zwart", fg = "wit", height="2", width="10").grid()
t.mainloop()

Hier is de uitvoer daarvoor:

En als u de knop visueel aantrekkelijker wilt maken, kunt u een Verlichting trefwoord en pas vervolgens de randbreedte aan:

t = Tk()
Knop (t, text="Klikbaar", bg="blauw", fg="wit",
hoogte=2, breedte=10, reliëf=VERHOOGD, grensbreedte=6).raster()
t.mainloop()

En dat ziet er zo uit:

Vervangen VERHOOGD met VLAK om te zien hoe dat komt.

U kunt zoveel knoppen toevoegen als u wilt. Maar zorg ervoor dat u overlap van de inhoud vermijdt.

Om overlapping te voorkomen, kunt u de rij- en kolompositie voor elke knop specificeren:

t = Tk()
Knop (t, tekst=1, bg="zwart", fg="wit").raster (rij=1, kolom=1)
Knop (t, tekst=2, bg="zwart", fg="wit").raster (rij=2, kolom=1)
Knop (t, tekst=3, bg="zwart", fg="wit").raster (rij=3, kolom=1)
Knop (t, tekst=4, bg="zwart", fg="wit").raster (rij=4, kolom=1)
t.mainloop()

een optionele opdracht trefwoord voegt echter gebeurtenissen toe aan de Knop widget. In wezen verankert het een optionele functie die bepaalde gebeurtenissen afhandelt wanneer u op een knop klikt.

De onderstaande code vermenigvuldigt bijvoorbeeld de waarde van elke knop met 6 wanneer u erop klikt. En het is gebaseerd op een vooraf gedefinieerde functie:

def druk op de knop (r):
r = 6*r
Label (t, tekst=r, lettertype=(60)).raster (rij=5, kolom=2)
t = Tk()
Knop (t, tekst = 1, bg = "zwart", fg = "wit", breedte = 10, hoogte = 2,
commando = lambda: druk op de knop (1)).grid (rij=1, kolom = 1, pady = 6)
Knop (t, tekst = 2, bg = "zwart", fg = "wit", breedte = 10,
commando = lambda: druk op de knop (2)).grid (rij = 2, kolom = 1, pady = 6)
Knop (t, tekst = 3, bg = "zwart", fg = "wit", breedte = 10,
commando = lambda: druk op de knop (3)).grid (rij = 3, kolom = 1, pady = 6)
Knop (t, tekst = 4, bg = "zwart", fg = "wit", breedte = 10,
commando = lambda: druk op de knop (4)).grid (rij = 4, kolom = 1, pady = 6)
t.mainloop()

In de bovenstaande code, druk op de knop behandelt de vermenigvuldigingsgebeurtenis. De Knop widget verwijst vervolgens naar die gebeurtenishandler met behulp van een anonieme lambda functie.

En als je je zorgen maakt over de pady trefwoord, scheidt het duidelijk elke knop in de rij. Dit vervangen door padx scheidt de knoppen over de kolom. En u kunt beide trefwoorden tegelijkertijd gebruiken om de knoppen naar wens over beide assen te scheiden.

Dat gezegd hebbende, je wilt niet voor elke knop het wiel opnieuw uitvinden zoals je deed in de vorige code. Dit vertraagt ​​de uitvoeringstijd, plus het maakt uw code moeilijk te lezen en te verfijnen.

Maar je kan gebruik een for-lus om deze herhaling te voorkomen.

Dus hier is een kortere en betere versie van de bovenstaande code:

def druk op de knop (r):
r = 6*r
Label (t, tekst = r, lettertype = (60)). raster (rij = 5, kolom = 2)
t = Tk()
een = [1, 4, 6, 7]
voor ik in een:
j = lambda y = i: druk op de knop (y)
Knop (t, tekst = i, bg = "zwart", fg = "wit", breedte = 10, hoogte = 2,
command=j).grid (rij = i, kolom = 1, pady = 6)
t.mainloop()

Menuknoppen en Controleknoppen

Laten we de kracht van voor loop om menuknoppen aan uw GUI toe te voegen:

van tkinter import *
t = Tk()
buttons = ["Bestanden", "Dashboard", "Menu", "Instellingen", "Help"]
m = 0
voor i binnen bereik (len (knoppen)):
# Haal elke tekst in de knoppenreeks met behulp van een lijstindex naarmate m toeneemt.
# Laat de kolom vervolgens met 1 toenemen over de lengte van de array:

Menuknop (t, tekst=knoppen[m], bg="blauw", fg="wit").raster (rij=5, kolom=i)
m += 1
t.mainloop()

Het toevoegen van controleknoppen aan uw GUI is ook vrij eenvoudig:

t = Tk()
Selectieknop (t, tekst = "Selecteer optie").grid()
t.mainloop()

Voel je vrij om die controleknop te vermenigvuldigen met de voor lus, zoals we eerder deden.

De Menu widget laat je klikbare vervolgkeuzemenu's ontwerpen in tkinter.

Zoals eerder vermeld, tkinter biedt veel widget-opties. En u zult er enkele gebruiken bij het ontwerpen van uw vervolgkeuzemenu.

Hier zijn enkele van de veelvoorkomende widgets-opties die u tegenkomt tijdens het maken van een vervolgkeuzelijst:

  • add_cascade: Het geeft een menulabel weer en plakt het waar het hoort.
  • add_separator: Het bakent submenu's af en groepeert ze in bovenste en onderste submenu's.
  • add_commando: Hier geef je je submenu een naam. Uiteindelijk accepteert het een opdrachtargument waarin u een gebeurtenishandler kunt specificeren.

Hier is een dropdown-voorbeeld dat deze drie opties gebruikt:

van tkinter import *
t = Tk()
fileOptions = ["Nieuw", "open", "Opslaan", "Opslaan als"]
fileOptionsAfterseparator = ["Importeren", "Exporteren", "Afsluiten"]
viewOptions = ["Transformeren", "Bewerken", "Maken"]
menubalk = Menu (t)
bestand = Menu (menubalk, tearoff=0)
voor i in bestandsopties:
file.add_command (label=i, command=Geen)
bestand.add_separator()
voor i in fileOptionsAfterseparator:
file.add_command (label=i, command=Geen)
menuBar.add_cascade (label="Bestand", menu=bestand)
Weergave = Menu (menubalk, tearoff=0)
voor i in viewOpties:
View.add_command (label=i, command=Geen)
menuBar.add_cascade (label="Bekijken", menu=Bekijken)
t.config (menu=menubalk)
t.mainloop()

Kijk hoe dat eruit ziet:

Tkinter-optiemenu

Een Optiemenu, in tegenstelling tot de Menu vervolgkeuzelijst, schakelt het label naar een geselecteerde optie.

Hoewel u een standaard labelwaarde voor een optiemenu kunt opgeven, heeft het standaard geen label.

Verwant: Ideeën voor Python-projecten die geschikt zijn voor beginners

Zo maakt u een optiemenu in tkinter:

t = Tk()
Ommenu = StringVar() #stel het variabele type van de opties in
Ommenu.set("MUO") #specificeer een standaardwaarde voor het menupictogram
OptionMenu (t, Omenu, "MUO", "Amazon", "Tutorial").grid()
t.mainloop()

Bouw een herbruikbare desktop-app met Tkinter

Tkinter biedt een scala aan functies waarmee u interactieve GUI-desktop-apps kunt maken. Hoewel het misschien niet veel flexibele verfraaiende functies heeft, zoals sommige andere Python GUI-modules, is het nog steeds een handig hulpmiddel dat het ontdekken waard is. En hoewel de voorbeelden hier slechts enkele basisconcepten tonen, tkinter biedt meer geavanceerde functies die u kunt uitproberen.

Dat gezegd hebbende, je kunt een GUI-desktopcalculator bouwen, een mini-teksteditor maken of zelfs een GUI-desktop-app maken om je inventarissen te beheren. Als je je vleugels wilt uitslaan en een desktop-GUI-major wilt worden, kun je zelfs andere GUI-modules van Python bekijken.

E-mail
GUI? Wat is een grafische gebruikersinterface?

Gebruik je een GUI? De kans is groot dat je ze hebt omdat je ze elke dag gebruikt.

Lees volgende

Gerelateerde onderwerpen
  • Programmeren
  • Python
Over de auteur
Idowu Omisola (88 artikelen gepubliceerd)

Idowu is gepassioneerd door alles wat slimme technologie en productiviteit betreft. In zijn vrije tijd speelt hij met coderen en schakelt hij over naar het schaakbord als hij zich verveelt, maar hij vindt het ook heerlijk om af en toe uit de routine te stappen. Zijn passie om mensen de weg te wijzen in moderne technologie motiveert hem om meer te schrijven.

Meer van Idowu Omisola

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren