Forum Python

 

 

Please or S’enregistrer to create posts and topics.

Transparence de la couleur de fond d'une Bounding Box

Bonjour.

Je suis un débutant sur Python.  Qui pourrait m'indiquer comment régler la transparence de la couleur de fond de la bounding box qui encadre le texte afin qu'elle ne le cache pas ?

Merci d'avance pour vos réponses.

Salut Didier_93

Le problème que tu rencontre est causé par le fait que canva tkinter ne gère pas la transparence! Le rectangle que tu as crée est opaque et il faut mettre le texte au dessus du rectangle. Voici un code que j'ai testé et qui marche bien:

from tkinter import *

# -----------------------------
# Fonction pour encadrer un texte
# -----------------------------
def encadre_mot(mot, fonte):
    # Création temporaire du texte (pour calculer la bbox)
    text_id = canvas.create_text(
        400, 300,
        text=mot,
        anchor=CENTER,
        font=fonte,
        fill=couleur_texte
    )

    # Récupération de la bounding box
    x1, y1, x2, y2 = canvas.bbox(text_id)

    # Suppression du texte temporaire
    canvas.delete(text_id)

    # Dessin du rectangle (arrière-plan)
    canvas.create_rectangle(
        x1 - 10, y1 - 10,
        x2 + 10, y2 + 10,
        outline="blue",
        width=2,
        fill=couleur_fond
    )

    # Dessin définitif du texte (au-dessus du rectangle)
    canvas.create_text(
        400, 300,
        text=mot,
        anchor=CENTER,
        font=fonte,
        fill=couleur_texte
    )

# -----------------------------
# Fenêtre principale
# -----------------------------
root = Tk()
root.title("Texte encadré - Tkinter")
root.geometry("800x600")

# -----------------------------
# Canvas
# -----------------------------
canvas = Canvas(root, width=800, height=600, bg="white")
canvas.pack()

# -----------------------------
# Paramètres d'affichage
# -----------------------------
couleur_texte = "black"
couleur_fond = "#dddddd"   # gris clair
ma_fonte = ("Arial", 20, "bold")

# -----------------------------
# Test
# -----------------------------
mot = "Du texte avec Python"
encadre_mot(mot, ma_fonte)

# -----------------------------
# Boucle principale
# -----------------------------
root.mainloop()

Voici l'aperçu en exécutant le code:

Si tu rencontre des problèmes, n'hésite pas à poser les ici!
Bonne chance Didier_93!

merci pour le partage

Bonjour,
vous pouvez régler la transparence de la couleur de fond de la bounding box avec un canal alpha (RGBA), par exemple facecolor=(1, 0, 0, 0.3) pour un fond rouge à 30 % d’opacité.

 

Bonjour Prumux,

Merci pour cette précision. Effectivement, la transparence du fond de la bounding box peut être réglée à l’aide du canal alpha d’une couleur RGBA.

Dans une couleur RGBA, les quatre valeurs correspondent respectivement à :

(Rouge, Vert, Bleu, Alpha)

Le canal **alpha** est donc la quatrième valeur. Il détermine le niveau de transparence de la couleur :

- alpha = 0 : couleur totalement transparente ;
- alpha = 0.3 : couleur faiblement opaque, donc très transparente ;
- alpha = 0.5 : semi-transparente ;
- alpha = 1 : couleur totalement opaque.

 

Ainsi :

facecolor=(1, 0, 0, 0.3)

 

définit un fond rouge avec une opacité de 30 %, ce qui permet de voir l'image ou les éléments situés derrière la bounding box.

Merci pour votre contribution !

Citation de pip_install le 6 octobre 2026, 10 h 08 min

Bonjour Prumux,

Merci pour cette précision. Effectivement, la transparence du fond de la bounding box peut être réglée à l’aide du canal alpha d’une couleur RGBA.

Dans une couleur RGBA, les quatre valeurs correspondent respectivement à :

(Rouge, Vert, Bleu, Alpha)

Le canal **alpha** est donc la quatrième valeur. Il détermine le niveau de transparence de la couleur :

- alpha = 0 : couleur totalement transparente ;
- alpha = 0.3 : couleur faiblement opaque, donc très transparente ;
- alpha = 0.5 : semi-transparente ;
- alpha = 1 : couleur totalement opaque.

 

Ainsi :

facecolor=(1, 0, 0, 0.3)

 

définit un fond rouge avec une opacité de 30 %, ce qui permet de voir l'image ou les éléments situés derrière la bounding box.

Merci pour votre contribution !

 

 

Merci beaucoup..