Python GUI Development

Maîtriser les Boutons Tkinter : Guide Complet

Spread the love

Ce tutoriel fournit un guide complet pour créer et personnaliser des boutons dans Tkinter, la bibliothèque GUI de facto de Python. Nous aborderons les options de base des boutons et montrerons comment lier les clics de boutons à des fonctions personnalisées, ouvrant ainsi la voie à des applications interactives.

Table des matières

Options par défaut du bouton Tkinter

Créer un bouton de base dans Tkinter est simple. Le widget Button prend plusieurs options pour personnaliser son apparence et son comportement.


import tkinter as tk

root = tk.Tk()

button = tk.Button(root, text="Cliquez-moi !")
button.pack()

root.mainloop()

Ceci crée un bouton simple. Décomposons le code :

  • import tkinter as tk : Importe la bibliothèque Tkinter.
  • root = tk.Tk() : Crée la fenêtre principale de l’application.
  • button = tk.Button(root, text="Cliquez-moi !") : Crée le bouton. root spécifie la fenêtre parente, et text définit le label du bouton.
  • button.pack() : Un gestionnaire de géométrie qui place le bouton dans la fenêtre. pack() est simple, mais pour des mises en page complexes, considérez grid() ou place().
  • root.mainloop() : Lance la boucle d’événements Tkinter, gardant la fenêtre réactive.

Au-delà de l’option text, de nombreuses autres sont disponibles :

  • width : Largeur du bouton en caractères (la valeur par défaut est calculée automatiquement).
  • height : Hauteur du bouton en lignes (la valeur par défaut est 1).
  • font : Définit la police (par exemple, font=("Arial", 14)).
  • bg (ou background) : Couleur d’arrière-plan (par exemple, bg="lightblue").
  • fg (ou foreground) : Couleur du texte (par exemple, fg="red").
  • activebackground : Couleur d’arrière-plan lorsque la souris survole.
  • activeforeground : Couleur du texte lorsque la souris survole.
  • state : État du bouton : NORMAL (par défaut), DISABLED ou ACTIVE.
  • relief : Le style de bordure 3D (par exemple, relief="groove", relief="raised", relief="sunken").
  • image : Vous permet d’utiliser une image au lieu du texte.

import tkinter as tk
from PIL import Image, ImageTk # Pour la prise en charge des images

root = tk.Tk()

# Charger une image (remplacez 'button_image.png' par votre image)
try:
    image = Image.open("button_image.png")
    photo = ImageTk.PhotoImage(image)
    button = tk.Button(root, image=photo, width=100, height=50, relief="raised")
    button.image = photo # Garder une référence pour éviter la collecte des ordures.
except FileNotFoundError:
    button = tk.Button(root, text="Échec du chargement de l'image !", width=20, height=2,
                       font=("Helvetica", 16), bg="red", fg="white")


button.pack()

root.mainloop()

Rappels de commande du bouton Tkinter

La véritable puissance des boutons provient de leur association à des fonctions. L’option command accepte une fonction à exécuter lorsque le bouton est cliqué.


import tkinter as tk

def ma_fonction():
    print("Bouton cliqué !")

root = tk.Tk()

button = tk.Button(root, text="Cliquez-moi !", command=ma_fonction)
button.pack()

root.mainloop()

Ici, ma_fonction est appelée lorsque le bouton est pressé. Remplacez ma_fonction par n’importe quelle fonction pour intégrer les clics de bouton à la logique de votre application.

Techniques avancées de boutons (facultatif)

Pour des scénarios plus avancés, considérez ces techniques :

  • Utilisation de fonctions lambda pour des rappels concis : Passez des arguments à vos fonctions à l’aide d’expressions lambda. Par exemple : button = tk.Button(root, text="Cliquez-moi !", command=lambda: ma_fonction("bonjour"))
  • Styles de boutons personnalisés : Explorez les widgets ttk (ttk.Button) pour des boutons à thème et plus d’options de style.
  • Images de boutons : Utilisez des images pour une conception de bouton plus attrayante.

Ce tutoriel fournit une base solide pour l’utilisation des boutons dans Tkinter. Expérimentez les différentes options et techniques pour créer des interfaces graphiques interactives et attrayantes.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *