Alles over Tkinter: de bibliotheek voor grafische interfaces in Python

Laatste update: 28 juli 2025
  • Tkinter is de standaard Python-bibliotheek voor het maken van grafische interfaces.
  • Het bevat een groot aantal widgets en is multiplatform.
  • Door het gebruiksgemak is het de ideale keuze voor zowel beginners als experts.

tkinter

Tkinter is uitgegroeid tot de meest gebruikte tool voor het creëren van grafische gebruikersinterfaces (GUI's) in de Python-wereld. Als je je programma's ooit visueel tot leven hebt willen brengen, verder dan alleen de console, dan is dit de perfecte tool voor jou. Deze bibliotheek is enorm populair onder ontwikkelaars die visuele, intuïtieve en gebruiksvriendelijke applicaties willen maken voor Windows, Linux en macOS.

Waarom is Tkinter zo populair bij programmeurs van alle niveaus? Simpel gezegd: het maakt ongelooflijk eenvoudig wat in andere programmeertalen een ware hoofdpijn kan zijn: het bouwen van vensters, knoppen, tekstvakken of interactieve menu's . Je hoeft je niet te verdiepen in low-level routines of speciale componenten te installeren: Python bevat Tkinter al als onderdeel van het standaardpakket, dus je kunt meteen aan de slag met je GUI.

Wat is Tkinter en waarvoor wordt het gebruikt?

Tkinter is de standaardbibliotheek van Python voor het maken van grafische gebruikersinterfaces (GUI's) . Gebouwd op Tcl/Tk-technologie, biedt het een eenvoudige, Pythonische laag voor het bouwen van vensters, knoppen, menu's, tekstvakken en allerlei visuele elementen . Het maakt al sinds de vroegste versies deel uit van Python, wat bijdraagt ​​aan de uitzonderlijke stabiliteit en platformonafhankelijke compatibiliteit.

Tcl/Tk werd in 1988 ontwikkeld door John Ousterhout met als doel snel en draagbaar GUI-ontwerp. Tkinter ontstond als een specifieke aanpassing voor Python en is uitgegroeid tot de voorkeurskeuze voor iedereen die eenvoudige desktopapplicaties of ongecompliceerde productiviteitstools wil ontwikkelen.

Belangrijkste kenmerken van Tkinter

  • Eenvoud en lage leercurve: Met slechts een paar regels code kun je beginnen met het maken van vensters en het toevoegen van grafische elementen. Ideaal als je Python leert of snel tools wilt ontwikkelen zonder te veel te investeren in complexe frameworks.
  • multiplatform: Je app werkt even goed op Windows, macOS en Linux als je Python correct hebt geïnstalleerd. Integratie met de standaard besturingselementen van het besturingssysteem zorgt voor een consistente en professionele uitstraling.
  • Licht en snel: Omdat het in Python is ingebouwd en minimale afhankelijkheden heeft, kunt u Tkinter-applicaties snel laden en uitvoeren, zelfs op eenvoudige computers.
  • Grote verscheidenheid aan widgets: Knoppen, labels, tekstvakken met één of meerdere regels, vervolgkeuzemenu's, schuifbalken, tabbladen... en met de module ttk (Themed Tk) U kunt genieten van moderne thema-widgets en hun uiterlijk naar wens configureren.
  • Robuust gebeurtenismodel: Het werkt met een hoofdlus (mainloop()) dat luistert naar elke actie van de gebruiker (klikken, toetsen, enz.) en in realtime reageert.
  • Uitbreidbaar en combineerbaar: U kunt uw eigen widgets maken en Tkinter combineren met andere Python-bibliotheken (zoals Pillow voor afbeeldingen of Matplotlib voor grafieken) om de mogelijkheden van uw programma uit te breiden.

Hoe Tkinter gebruiken? Aan de slag en basisstructuur

tkinter

Aan de slag gaan met Tkinter is net zo eenvoudig als het importeren van de module en het aanmaken van een hoofdvenster. Python ondersteunt verschillende importmethoden, waarvan de meest voorkomende zijn: import tkinter as tk, waardoor het gemakkelijk is om te verwijzen naar componenten met het voorvoegsel tk. tijdens de ontwikkeling.

import tkinter as tk

# Crear la ventana principal
ventana = tk.Tk()
ventana.title("Mi primera aplicación con Tkinter")
ventana.geometry("300x200")

# Mostrar la ventana, manteniéndola abierta
ventana.mainloop()

De methode mainloop() is de sleutel: Het is de belangrijkste lus die het venster openhoudt en het voortdurend vernieuwt om elke interactie te kunnen verwerken.

  Solidity onder de knie krijgen: alles over de taal van slimme contracten

Tkinter Fundamentals: Widgets en Hiërarchie

De kern van elke Tkinter GUI wordt gevormd door widgets . Een widget is elk visueel en interactief element: knoppen, labels, tekstvakken, lijsten, menu's, enzovoort.

Widgethiërarchie: Tkinter organiseert widgets in een boomstructuur. Het hoofdvenster (of rootvenster) is de container die de rest van de elementen bevat. Je kunt frames hebben (Frame) die andere widgets groeperen en zo uw interface op een hiërarchische en ordelijke manier samenstellen.

Basisvoorbeeld: label en knop

import tkinter as tk

root = tk.Tk()
root.title("Ejemplo de widgets")

etiqueta = tk.Label(root, text="¡Hola, Tkinter!")
etiqueta.pack()

boton = tk.Button(root, text="Cerrar", command=root.destroy)
boton.pack()

root.mainloop()

In dit voorbeeld is de label en knoop worden toegevoegd aan het hoofdvenster met behulp van de methode pack(), een van de geometriemanagers van Tkinter (samen met grid() y place()).

Geometriemanagers: pak, raster en plaats

Widgets verschijnen niet zomaar wanneer je ze aanmaakt: je moet Tkinter vertellen hoe en waar ze geplaatst moeten worden. Hiervoor zijn er drie belangrijke geometriebeheerders:

  • verpakking: Plaatst elementen opeenvolgend (boven-onder of links-rechts) op basis van de volgorde waarin ze zijn toegevoegd. Opties: side, fill, expand...
  • rooster: Organiseert widgets in rijen en kolommen, zoals een tabel. Erg handig voor formulieren of gestructureerde lay-outs.
  • plaats: Maakt absolute posities mogelijk met behulp van x- en y-coördinaten. Alleen aanbevolen voor zeer specifieke interfaces.

Opties voor pakketbeheerder

  • anker: Geeft aan waar de widget binnen uw ruimte moet worden verankerd (n, s, e, w, center, Enz.).
  • uitbreiden: Booleaanse (0/1) zodat de widget de beschikbare ruimte inneemt.
  • vullen: Hoe uit te breiden (x, y, both, none).
  • ipadx/ipady, padx/pady: Binnen-/buitenvulling in pixels.
  • kant: Positie ten opzichte van de container (left, right, top, bottom).

Hoe gebeurtenissen en callbacks werken in Tkinter

Tkinter volgt een event-driven model: Widgets kunnen reageren op gebruikersacties (klikken, toetsaanslagen, enz.) door gebruik te maken van functies die terugbelverzoekenU kunt specifieke gebeurtenissen aan de methode binden bind() en geef de functie door die moet worden uitgevoerd wanneer de gebeurtenis zich voordoet.

Voorbeeld: om de achtergrondkleur van een widget te wijzigen bij het zweven:

def cambiar_color(evento):
    etiqueta.config(bg='yellow')

etiqueta.bind('', cambiar_color)

Het gebeurtenisobject dat de functie ontvangt, bevat nuttige informatie zoals de widget die de gebeurtenis heeft gegenereerd, de muispositie, de ingedrukte toetsen, enzovoort.

Variabelen gekoppeld aan widgets: bidirectionele controle

Bij sommige widgets kunt u hun waarden koppelen aan speciale Tkinter-variabelen, waardoor het synchroniseren van gegevens tussen de interface en uw codelogica eenvoudiger wordt. Deze variabelen (StringVar, IntVar, DoubleVar, BooleanVar) zorgen ervoor dat eventuele wijzigingen automatisch in de widget worden doorgevoerd en vice versa.


texto_usuario = tk.StringVar()
entrada = tk.Entry(root, textvariable=texto_usuario)

Meest gebruikte widgets en hun belangrijkste opties

Label

  • Tekst of afbeeldingen weergeven. Opties:tekst, bg, fg, doopvont, beeld.

Knop

  • Activeer een actie met de optie commando. U kunt de status ook beheren met staat (normaal/uitgeschakeld).

Invoer (éénregelige tekstinvoer)

  • Om platte tekst in te voeren. Opties: tonen (voor wachtwoorden), krijgen(), verwijderen ().
  Hoe je een cryptocurrency vanaf nul creëert: de ultieme stapsgewijze handleiding in 2025

Tekst (tekstvak met meerdere regels)

  • Hiermee kunt u meerdere regels weergeven of vastleggen. Methoden: invoegen (), krijgen(), verwijderen ().

Controleknop

  • Maakt binaire selecties mogelijk. Deze worden normaal gesproken afgehandeld met IntVar o BooleanVar.

Combobox (keuzelijst met ttk)

  • Selecteer een optie uit een lijst. Het maakt deel uit van de module. ttk.

Geavanceerde opties en aanpassingen in Tkinter

Optie instellingen

Het uiterlijk en gedrag van widgets kunnen zowel tijdens het aanmaken als later worden gewijzigd. U kunt argumenten via trefwoorden doorgeven, optienamen als woordenboekindexen behandelen of de methode gebruiken. config()Om uw kennis van grafische interfaces uit te breiden, kunt u bekijken hoe het werkt Wat is een grafische gebruikersinterface en hoe werkt het?.


boton = tk.Button(root, text="Enviar", fg="white", bg="blue")
boton.config(state="disabled")

Zie de Tk-manpagina's voor standaard- en widgetspecifieke opties. Je kunt ook ontdekken welke opties een widget ondersteunt. widget.config() o widget.keys().

Gegevenstypen voor opties

Opties kunnen van het type kleur (op naam of hexadecimale waarde), booleaans (0/1, ja/nee), lettertype ({Arial 12 bold}), afstand (10 o 5c voor centimeters) en nog veel meer. De typen variëren afhankelijk van de functionaliteit van de widget en de aard van de optie. Voor een beter begrip van gerelateerde concepten kunt u terecht op opdrachtregelinterface en tekstbesturing.

Vensters en meerlagig beheer

Met Tkinter kunt u eenvoudig extra (onderliggende) vensters maken om dialoogvensters, onderliggende formulieren of berichten weer te geven. Gebruik de klasse Toplevel om nieuwe vensters te creëren die onafhankelijk zijn van het hoofdvenster.


def abrir_secundaria():
    secundaria = tk.Toplevel(root)
    secundaria.title("Ventana secundaria")
    tk.Label(secundaria, text="¡Soy una ventana hija!").pack()

Afbeeldingen en multimedia in Tkinter

Dankzij lessen is het mogelijk om afbeeldingen te bekijken PhotoImage y BitmapImageJe kunt PNG, GIF, PGM of PPM uploaden (alleen PNG sinds Tk 8.6). Zie ook voor meer gedetailleerde informatie over de grafische interface. Wat is Wazuh?.


img = tk.PhotoImage(file="ruta/a/imagen.png")
etiqueta = tk.Label(root, image=img)
etiqueta.pack()

Belangrijk: U moet een verwijzing naar de afbeelding in een Python-variabele bewaren zolang het label op het scherm wordt weergegeven, anders verdwijnt het.

Vensterbeheer en -beheer

Gebruik methoden zoals title(), geometry(), iconphoto() y protocol() om het uiterlijk, de titel, de pictogrammen en het gedrag bij het sluiten van het venster te regelen. U kunt ook terecht op Hoe u de CPU-temperatuur in Windows 11 controleert om een beter inzicht te krijgen in de prestaties van uw computer bij het ontwikkelen van grafische toepassingen.

Het commando wm Tk's wordt vertaald in klassemethoden Wm in Tkinter, waarmee u de venstereigenschappen diepgaand kunt beheren vanuit uw Python-script.

Praktische opties voor uw ontwikkelingen

Als u functionele applicaties vanaf nul wilt bouwen, zijn dit de basisstappen:

  • Importeer Tkinter
  • Maak het hoofdvenster
  • Voeg widgets toe zoals labels, knoppen, tekstinvoer…
  • Organiseer widgets met een geometriemanager (pack, grid...)
  • Stel indien nodig gebeurtenissen en callbacks in
  • Pas het uiterlijk en de functionaliteit van widgets aan
  • Voer de hoofdlus uit

Praktisch voorbeeld: Basisrekenmachine

import tkinter as tk
from tkinter import messagebox

operacion = ""
def click_boton(valor):
    global operacion
    if valor == "=":
        try:
            resultado = eval(operacion)
            entrada.set(resultado)
            operacion = str(resultado)
        except Exception:
            messagebox.showerror("Error", "Operación inválida")
            operacion = ""
            entrada.set("")
    elif valor == "C":
        operacion = ""
        entrada.set("")
    else:
        operacion += str(valor)
        entrada.set(operacion)

ventana = tk.Tk()
ventana.title("Calculadora")
ventana.geometry("400x400")
ventana.resizable(False, False)
entrada = tk.StringVar()

campo_texto = tk.Entry(ventana, textvariable=entrada, font=("Arial", 20), justify="right", bd=10)
campo_texto.grid(row=0, column=0, columnspan=4, padx=10, pady=10)

botones = 
fila = 1
columna = 0
for boton in botones:
    tk.Button(
        ventana,
        text=boton,
        font=("Arial", 18),
        width=5,
        height=2,
        command=lambda b=boton: click_boton(b)
    ).grid(row=fila, column=columna, padx=5, pady=5)
    columna += 1
    if columna > 3:
        columna = 0
        fila += 1

ventana.mainloop()

Dit voorbeeld laat zien hoe u een visuele interface op een compacte en functionele manier kunt combineren met bedrijfslogica. De gebeurtenis van elke knop wordt beheerd, bewerkingen worden geëvalueerd en de gebruiker wordt geïnformeerd over fouten.

  JavaScript-frameworks: alles wat u moet weten om de beste te kiezen

Threads, subprocessen en gebeurtenismodel in Tkinter

Python en Tcl/Tk hebben grote verschillen in de manier waarop ze met threads omgaan. Als je threads in je applicatie gaat gebruiken, houd er dan rekening mee dat Elk Tkinter-object is gekoppeld aan een specifieke Tcl-interpreter, die beheerd moet worden door de thread die het object heeft gemaakt.Hoewel u meerdere threads en meerdere interpreters kunt maken, is het gebruikelijk en het veiligst om één exemplaar van Tk() per applicatie en beheer parallelle logica zorgvuldig om blokkering van de hoofdlus te voorkomen. Lees meer over Wazuh voor meer informatie.

Als u langdurige taken moet uitvoeren, overweeg dan om after() om taken uit te stellen of processen in aparte threads te starten, waarbij de resultaten alleen naar de interface worden verzonden met after() om conflicten te vermijden.

Goede praktijken en nuttige bronnen

  • Houd de bedrijfslogica gescheiden van de grafische interface voor eenvoudig onderhoud.
  • Als u vragen hebt over de opties van een widget, gebruik dan widget.config() om de beschikbare configuratie te controleren.
  • Raadpleeg de officiële Python-documentatie en de Tk-manpagina's voor specifieke details.
  • Overweeg om de module te gebruiken ttk voor modernere interfaces en themaondersteuning.
grafische gebruikersinterface
Gerelateerd artikel:
Wat is een grafische gebruikersinterface en hoe werkt het?

Tkinter is de perfecte tool als je snel en eenvoudig grafische gebruikersinterfaces in Python wilt maken. Je hoeft niets extra's te installeren; de functies die het biedt, zijn meer dan voldoende voor de meeste projecten, en je kunt de mogelijkheden altijd uitbreiden door het te combineren met andere bibliotheken. Of je nu een beginner bent of functionele tools voor je dagelijkse werk wilt creëren, met Tkinter kun je binnen enkele minuten van de console naar de visuele wereld overstappen. Ontdek, test en ontdek hoe ver je fantasie reikt met deze krachtige standaard Python-module.