Bonjour,
en continuant mon apprentissage, j'utilise tkinter comme beaucoup.
Pour afficher un labyrinthe j'utilise la fonction suivante :
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
49
def aff_lab(lab, fenetre):
    """
        Affichage d'un labyrinthe
        
        lab : liste contenant le labyrinthe

        pas de valeur de retour
    """
    # Rq : la taille des sprites pourrait être un paramètre
    toile = Canvas(fenetre, width = 600, height = 600)

    coin    = PhotoImage(file = "sprites/angle.png")
    mur_h   = PhotoImage(file = "sprites/mur_h.png")
    mur_v   = PhotoImage(file = "sprites/mur_v.png")
    sol     = PhotoImage(file = "sprites/sol.png")
    sortie  = PhotoImage(file = "sprites/sortie.png")
    ennemie = PhotoImage(file = "sprites/ennemie.png")
    tresor  = PhotoImage(file = "sprites/coffre_ferme.png")

    n_ligne = 0
    for ligne in lab :
        n_col = 0
        for car in ligne :
            if car == "+" :
                toile.create_image(n_col*30, n_ligne*30, anchor = NW, image = coin)
            if car == "-" :
                toile.create_image(n_col*30, n_ligne*30, anchor = NW, image = mur_h)
            if car == "|" :
                toile.create_image(n_col*30, n_ligne*30, anchor = NW, image = mur_v)
            if car == " " :
                toile.create_image(n_col*30, n_ligne*30, anchor = NW, image = sol)
            if car == "1" or car == "2" or car == "3" :
                toile.create_image(n_col*30, n_ligne*30, anchor = NW, image = tresor)
            if car == "$" :
                toile.create_image(n_col*30, n_ligne*30, anchor = NW, image = ennemie)
            if car == "S" :
                toile.create_image(n_col*30, n_ligne*30, anchor = NW, image = sortie)
            n_col += 1
        n_ligne += 1
    toile.pack()
    return (toile, {
        "coin" : coin,
        "mur_h" : mur_h,
        "mur_v" : mur_v,
        "sol" : sol,
        "sortie" : sortie,
        "ennemie" : ennemie,
        "tresor" : tresor})
La partie en rouge m'interroge.
Elle m'oblige à l'appeler par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
    (toile, sprites) = M_Lab_01.aff_lab(level, fenetre)
Pourquoi faut-il un retour de valeur alors que la fonction ne fait qu'afficher avec, de plus, la création de deux variables (toile, sprites) dont je ne me sert pas.
J'ai évidemment essayé sans et une fenêtre vide s'ouvre mais pas de labyrinthe.
Merci de vos lumières.
Sylvain.