IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Problème de transparence de widget


Sujet :

Tkinter Python

  1. #1
    Invité
    Invité(e)
    Par défaut Problème de transparence de widget
    Salut, je bosse actuellement sur l'interface de mon projet d'isn, j'utilise Tkinter. J'ai séparé mon écran en plusieurs frames pour pouvoir placer les canvas comme je le souhaitais. Cependant, je n'arrive pas à rendre le fond des frames transparents, donc j'ai mon image (.gif à fond transparent) où je ne vois pas le fond que j'ai mis en jaune pour bien le remarquer si jamais. Donc mon image, mon canvas ou mon frame fait bugger la transparence.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    from Tkinter import *
     
    # Creation de la fenetre windows
    Jeu=Tk()
    Jeu.title("Break The Team")
    Jeu.geometry("1200x720")
    Jeu.resizable(width=False,height=False)
    Jeu.configure()
     
    '''fond = PhotoImage(file="fond_plateau1.gif")
    Canevas = Canvas(Jeu, width=1200, height=720)
    item = Canevas.create_image(0,0,anchor=NW, image=fond)
    print(item)'''
     
    # Creation des frames principales
    frame3 = Frame(Jeu, bg="yellow", width=200, height=720)
    frame3.pack(side=LEFT)
     
    frame1 = Frame(Jeu, bg="black",    width=1000, height=620)
    frame1.pack(side=BOTTOM)
     
    frame2 = Frame(Jeu, bg="blue",   width=1000, height=100)
    frame2.pack()
     
    # Creation des frames secondaires
        # Frames de gauches
    framea = Frame(frame3, bg="yellow",width=200, height=70)
    framea.pack (side=TOP)
    photo1 = PhotoImage(file="test1.gif")
    Canfra = Canvas(framea, width=200, height=70)
    item1 = Canfra.create_image(0,0,anchor=NW, image=photo1)
    print(item1)
    Canfra.pack()
     
    frameb = Frame(frame3, bg="green",width=200, height=90)
    frameb.pack (side=TOP)
     
    framec = Frame(frame3, bg="red",width=200, height=90)
    framec.pack (side=TOP)
     
    framed = Frame(frame3, bg="green",width=200, height=340)
    framed.pack (side=TOP)
     
    framee = Frame(frame3, bg="white",width=200, height=130)
    framee.pack ()
     
    Jeu.mainloop()
    Merci d'avance pour vos réponses

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 279
    Points : 36 765
    Points
    36 765
    Par défaut
    Salut,

    Le fond de l'image est le background du Canvas (il n'est pas transparent, celui la).

    L'histoire se résume a une Frame dans laquelle a été place un Canvas dans lequel on place une image.

    Quel est l’intérêt du reste? Qu'est ce que ca apporte au problème que vous voulez illustrer?

    De plus, en "simplifiant", vous pourriez facilement tester et voir ce qui se passe.
    Ca se fait en quelques lignes de commande directement a la console Python.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut, après de longs essais, j'ai toujours le même problème. J'ai donc essayé de rendre le fond du canvas transparent mais je n'y arrive pas, bien que j'ai essayé d'y ajouter cette fonction : canvas.attributes("-alpha", 0.5).
    Quelqu'un a donc une solution ou un autre système à me proposer ? Un exemple si possible ?? Merci d'avance

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Stop0g Voir le message
    Salut, après de longs essais, j'ai toujours le même problème. J'ai donc essayé de rendre le fond du canvas transparent mais je n'y arrive pas, bien que j'ai essayé d'y ajouter cette fonction : canvas.attributes("-alpha", 0.5).
    Quelqu'un a donc une solution ou un autre système à me proposer ? Un exemple si possible ?? Merci d'avance
    Bonjour,

    Perso, j'ai déjà du mal à comprendre par rapport à quoi ta frame doit être transparente ?

    Est-ce que tu veux que ce soit le fond transparent de ton image .gif qui affiche la couleur de fond de la frame sur laquelle il se trouve ?

    attention : la méthode .attributes() n'est valable que sur une fenêtre Toplevel() ou Tk() (communication directe avec le gestionnaire de fenêtres qui gère -ou non- les "attributes").

    d'ailleurs un test rapide produit ceci :
    Traceback (most recent call last):
    File "./test.py", line 34, in <module>
    Canfra.attributes("-alpha", 0.5)
    AttributeError: Canvas instance has no attribute 'attributes'
    La dernière ligne du message d'erreur est assez explicite, je crois.

    Si je puis me permettre : ce serait plus simple si tu traitais ton "bug" dans un fichier test.py à part de ton projet, en n'y mettant que le code concerné e.g.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    #!/usr/bin/env python
    # -*- coding: cp1252 -*-
     
    """
        fichier : test.py
    """
     
    import Tkinter as TK
     
    root = TK.Tk()
     
    canvas = TK.Canvas(root, bg="yellow")
     
    photo = TK.PhotoImage(file="test1.gif")
     
    canvas.create_image(0, 0, anchor=TK.NW, image=photo)
     
    canvas.pack()
     
    TK.Button(root, text="Quitter", command=root.quit).pack()
     
    root.mainloop()
     
    """
        moins de code, plus de lisibilité.
     
        à partir de là, tu as une base saine pour traquer ton bug.
     
        quand tu auras trouvé la solution, il te suffira de la
        copier/coller dans ton fichier de projet.
    """
    Chez moi, avec un fichier image test1.gif à fond transparent, ça marche parfaitement : je vois la couleur de fond du canvas.

    Est-ce que ton image .gif a réellement un fond transparent, au moins ?

    Ci-joint mon fichier .gif de test pour vérifier chez toi : Nom : test1.gif
Affichages : 632
Taille : 251 octets (clic droit, enregistrer la cible du lien sous...)

    @+

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci pour tout, j'ai pas répondu de suite car j'ai voulu essayé de finir toute la fenêtre et cela fonctionne à merveille
    Je le lock en tant que résolu et merci encore pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ImageList] problème de transparence
    Par Rayek dans le forum Delphi
    Réponses: 7
    Dernier message: 19/05/2006, 11h12
  2. Réponses: 13
    Dernier message: 01/12/2005, 05h34
  3. Réponses: 5
    Dernier message: 18/03/2005, 20h10
  4. [DX9] [Debutant] Problème de transparence :(
    Par SekYo dans le forum DirectX
    Réponses: 5
    Dernier message: 10/09/2004, 14h19
  5. Réponses: 8
    Dernier message: 06/07/2004, 18h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo