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