Python >> Tutoriel Python >  >> Python GUI >> Tkinter GUI

Tutoriel Tkinter - Utilisation des boutons Tkinter

Bonjour à tous! Dans l'article d'aujourd'hui sur Tkinter, nous aborderons le widget Tkinter Button.

Le widget de bouton Tkinter est un widget très simple et facile à utiliser.

Voyons comment nous pouvons construire des boutons et ajouter des fonctionnalités à notre application graphique, en utilisant quelques exemples illustratifs !


Widget bouton Tkinter

Ce widget peut être utilisé pour créer différents types de boutons.

Nous pouvons avoir des boutons contenant non seulement du texte, mais aussi des images !

Nous pouvons également faire en sorte qu'un bouton Tkinter appelle une fonction spécifique correspondant à la fonctionnalité du bouton, en utilisant une fonction de rappel .

Pour définir un bouton avec un texte spécifique et une fonction de rappel, nous pouvons utiliser la définition suivante :

button = tk.Button(master, text, command)

Ici, text est le texte sur le bouton, et command fait référence à la fonction de rappel qui est invoquée lorsque le bouton est enfoncé.

Faisons maintenant une application simple ayant un bouton qui, lorsqu'il est cliqué, affiche une boîte d'alerte, qui nous indique qu'il a été cliqué !

L'extrait de code ci-dessous le montre, avec des commentaires expliquant chaque ligne de code.

import tkinter as tk
from tkinter import messagebox

# Create the master object
master = tk.Tk()

# Sets the window size as "300x300"
master.geometry("300x300")

# This is the button callback function
# This must be visible to the button, so we must define it before the button widget!
def buttonCallback():
    messagebox.showinfo("Message", "You have clicked the Button!")

# Create a Button widget
button = tk.Button(master, text="Click", command=buttonCallback)

# And a label for it
label_1 = tk.Label(master, text="Simple Button")

# Use the grid geometry manager to put the widgets in the respective position
label_1.grid(row=0, column=0)
button.grid(row=1, column=0)

# The application mainloop
tk.mainloop()

Maintenant, en exécutant ce programme, vous obtiendrez la sortie suivante.

Maintenant, si vous voulez qu'une image accompagne votre bouton, pour lui donner un peu plus de fantaisie, c'est possible !

Ajoutez simplement un autre argument de mot-clé au tk.Button() appel, appelé image ! Ceci est un ImageTk.PhotoImage , que vous devez instancier à l'aide d'un fichier image.

Pour utiliser ImageTk , il faut l'importer depuis le PIL module. Nous créons d'abord un PIL image, redimensionnez-la pour qu'elle soit suffisamment petite, puis formez notre PhotoImage .

from PIL import Image, ImageTk

# Create a tk.PhotoImage
my_image = Image.open("path/to/image.png")
# Resize it to fit button dimensions
my_image = my_image.resize((25, 25), Image.ANTIALIAS)

Maintenant, nous sommes prêts à former l'objet photoimage.

my_image = Imagetk.PhotoImage(my_image)

Maintenant, enfin, nous pouvons l'ajouter à notre bouton !

b = Button(compound=LEFT, image=my_image, text="Button")

Cependant, vous devez être un peu prudent, car l'utilisation d'une icône remplacera tout texte contenu dans un bouton.

Pour éviter cela, utilisez le compound argument de mot-clé. Cette valeur peut être définie sur tk.CENTER , tk.LEFT , tk.RIGHT , tk.TOP ou tk.BOTTOM . Cela précisera les orientations du texte, par rapport à l'image.

Puisque nous placerons le texte au-dessus de l'image, nous utiliserons tk.TOP

b = Button(compound=LEFT, image=my_image, text="Button", compound=tk.TOP)

Je vais vous montrer le code complet ci-dessous :

import tkinter as tk
from tkinter import messagebox
from PIL import Image, ImageTk

# Create the master object
master = tk.Tk()

# Sets the window size as "300x300"
master.geometry("300x300")

# This is the button callback function
# This must be visible to the button, so we must define it before the button widget!
def buttonCallback():
    messagebox.showinfo("Message", "You have clicked the Button!")

# Create a tk.PhotoImage
my_image = Image.open("debian.png")
# Resize it to fit button dimensions
my_image = my_image.resize((25, 25), Image.ANTIALIAS)
# Finally, get the PhotoImage object
my_image = ImageTk.PhotoImage(my_image)

# Create a Button widget
button = tk.Button(master, text="Click", image=my_image, command=buttonCallback, compound=tk.TOP)

# And a label for it
label_1 = tk.Label(master, text="Simple Button")

# Use the grid geometry manager to put the widgets in the respective position
label_1.grid(row=0, column=0)
button.grid(row=1, column=0)

# The application mainloop
tk.mainloop()

Sortie


Conclusion

J'espère que vous avez également pu créer votre propre widget Tkinter Button. Dans les prochains didacticiels, nous nous concentrerons davantage sur d'autres widgets, alors restez à l'écoute pour en savoir plus !



Prochain article