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 :

Texte du Label invisible


Sujet :

Tkinter Python

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut Texte du Label invisible
    Bonjour,

    j'ai une grille renfermant des rectangles qui contiennent des labels. En voici un exemple simple :

    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
    import tkinter as tk
    root = tk.Tk()
    canvas = tk.Canvas(
        root,
        width=100,
        height=100,
        bg='white',
        highlightthickness=0,
    )
    canvas.grid()
     
    text_item = canvas.create_text(20, 20, anchor="w", text="Hello world!", fill="white")
    bbox = canvas.bbox(text_item)
    rect_item = canvas.create_rectangle(bbox, outline="red", fill="black")
    canvas.tag_raise(text_item,rect_item)
     
    text_item = canvas.create_text(40, 60, text="Hello world!", fill="white")
    bbox = canvas.bbox(text_item)
    rect_item = canvas.create_rectangle(bbox, outline="red", fill="black")
    canvas.tag_raise(text_item,rect_item)
     
    root.mainloop()
    Dans le code ci-dessous, le texte du label ne s'affiche pas. Pourriez-vous me dire pourquoi, svp?


    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
    import tkinter as tk
     
    DIM_GRILLE = (10, 10)
    DIM_CASE = 60
    DIM_LIGNE = 1
     
    DIM_CANEVAS = (
        DIM_GRILLE[0]*DIM_CASE + (DIM_GRILLE[0]+1)*DIM_LIGNE,
        DIM_GRILLE[1]*DIM_CASE + (DIM_GRILLE[1]+1)*DIM_LIGNE
    )
     
    fenetre = tk.Tk()
     
    can = tk.Canvas(
        fenetre,
        width=DIM_CANEVAS[0],
        height=DIM_CANEVAS[1],
        bg='red',
        highlightthickness=0,
    )
    can.grid()
     
    items = []
    colors = ['white', 'yellow']
    y = DIM_LIGNE
     
    for ligne in range(DIM_GRILLE[1]) :    
        x = DIM_LIGNE
        ids = []
        colors.reverse()
        for col in range(DIM_GRILLE[0]) :
     
            text_item = can.create_text(x+DIM_CASE/2, y+DIM_CASE/2, text="TEXT", fill="black")
            bbox = can.bbox(text_item)
            i = can.create_rectangle(bbox, outline="red", fill=colors[col % 2])
     
            ids.append(i)
            x += DIM_CASE + DIM_LIGNE
        items.append(ids)
        y += DIM_CASE + DIM_LIGNE
     
    fenetre.mainloop()

    Merci d'avance,
    cordialement,
    Arsène

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Arsene12 Voir le message
    Dans le code ci-dessous, le texte du label ne s'affiche pas. Pourriez-vous me dire pourquoi, svp?
    Il vous faut apprendre à lire le code comme s'il s'agissait d'une langue étrangère: lorsqu'il y a des mots dont vous ne comprenez pas le sens, vous ouvrez un dictionnaire. Pour le code que vous récupérez, c'est pareil, sauf que le dico. sera ici la documentation du widget Canvas.
    D'autant qu'ici, vous avez un code qui fonctionne, un code qui ne fonctionne pas et l'instruction qui le fait marcher à trouver et à comprendre.

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

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut
    J'ai trouvé! Il fallait rajouter la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    can.tag_raise(text_item,i)
    comme dans le premier exemple. Si je lis la doc que vous m'avez indiqué par le lien widget Canvas:

    Canvas.tag_raise(tagOrId, aboveThis) :

    Déplace les items sélectionnés par tagOrId juste au-dessus du premier ou seul item sélectionné par aboveThis. S’il y en a plusieurs, leur ordre relatif n’est pas modifié. Cette méthode ne s’applique pas aux items fenêtre, window.
    j'y comprend pas grand chose .

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Amusez vous à lui faire dessiner des rectangles qui se chevauchent.
    Par construction, le dernier crée sera "au dessus" des précédents. Ce qui introduit une dimension supplémentaire, en plus de x, y on a le z-order et des méthodes qui permettent de changer le défaut.
    Dans votre cas, vous avez créé l'item text avant le rectangle dont, il sera "dessous" (et invisible).

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

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

Discussions similaires

  1. label invisible : pourquoi ?
    Par jakouz dans le forum Débuter
    Réponses: 2
    Dernier message: 24/03/2011, 18h26
  2. Texte des labels
    Par Sh4dow49 dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 17/04/2008, 16h42
  3. Label Invisible en Infopath
    Par Logarythme dans le forum InfoPath
    Réponses: 2
    Dernier message: 19/02/2008, 17h38
  4. Rajouter du texte à un label suivant le radiobouton selectionné
    Par poussin_44 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 04/07/2007, 15h03
  5. Réponses: 3
    Dernier message: 15/11/2006, 13h46

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