bonjour !
je travaille actuellement sur la programmation d'un sudoku, j'ai deja ma grille et mes nombres aleatoire qui s'affiche dans la grille (fonction:grille()/shuffle(x)/coordonnee()).
maintenant, j'essaye de definir une nouvelle fonction qui me permet de remplacer mes carréx par une case cliquable. j'ai essaye plusieurs technique mais je ne trouve aucune solution. je suis presque sûr que le widget entry me premettrais d'avoir cette case cliquable dans mon tkinter mais je n'arrive pas a definir la bonne fonction.
de plus j'essaye de creer une fonction (cache()/cachage()) pour que mon programme prenne aleatoirement dans mes carré (ici je n'est mis que ce de la sous grille haut/gauche) et en remplace certain par cette case cliquable

je m'excuse par avance pour la longueur du programme mais je pense qu'il faut voir toutes ces fonctions pour mieux comprendre. j'espere que vous pourrez m'aider !
cordialement

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
 
from tkinter import *
import random
 
nb=9
nb1=3
x0,y0=60,60
c=60
c1=180
 
def grille():                                                                   #creation du tableau
    page.delete(ALL)
    for k in range(nb1+1):                                                      #tableau en 3x3
        page.create_line(x0+c1*k, y0,x0+c1*k,y0 + nb1*c1, width=2)
        page.create_line(x0, y0+c1*k,x0+nb1*c1 ,y0+c1*k, width=2)
    for i in range(nb+1):                                                       #tableau en 9x9
        page.create_line(x0+c*i, y0,x0+c*i,y0 + nb*c)
        page.create_line(x0, y0+c*i,x0+nb*c ,y0+c*i)
    cachage()
    coordonnee()
 
def shuffle(x): #liste de nombre aleatoire de 1 a 9
        x = list(x)
        random.shuffle(x)
        return x
 
 
def coordonnee():
    A1  = B4 = C7 = D6 = E9 = F3 = G5 = H8 = I2 = y[0] #1er terme de ma suite aléatoire
    A2  = B5 = C8 = D1 = E4 = F7 = G6 = H9 = I3 = y[1]
    A3  = B6 = C9 = D2 = E5 = F8 = G1 = H4 = I7 = y[2]
    A7  = B1 = C4 = D3 = E6 = F9 = G2 = H5 = I8 = y[3]
    A8  = B2 = C5 = D7 = E1 = F4 = G3 = H6 = I9 = y[4]
    A9  = B3 = C6 = D8 = E2 = F5 = G7 = H1 = I4 = y[5]
    A4  = B7 = C1 = D9 = E3 = F6 = G8 = H2 = I5 = y[6]
    A5  = B8 = C2 = D4 = E7 = F1 = G9 = H3 = I6 = y[7]
    A6  = B9 = C3 = D5 = E8 = F2 = G4 = H7 = I1 = y[8]
 
    carre1 = page.create_text(90, 90, text=A1) #carre haut gauche
    carre2 = page.create_text(150, 90, text=A2)
    carre3 = page.create_text(210, 90, text=A3)
    carre4 = page.create_text(90, 150, text=B1)
    carre5 = page.create_text(150, 150, text=B2)
    carre6 = page.create_text(210, 150, text=B3)
    carre7 = page.create_text(90, 210, text=C1)
    carre8 = page.create_text(150, 210, text=C2)
    carre9 = page.create_text(210, 210, text=C3)
 
if __name__ == '__main__':
 
    x = range(1,10)
    y = shuffle(x)
 
    print(y) #y[] place des nombres dans ma suite aleatoire
 
    shuffle(x)
 
def cache(x):
    k= list(x)
    random.shuffle(k)
    return k
 
x= range(1,82)
v= cache(x)
print (v)
 
def cachage():
    cache (x)
    coordonnee()
    for f in range (1,20):
        coordonnee.delete()
        X=v[f]
        carreX=Entry(width=60, height=60)
 
 
fen=Tk()
 
barredemenus=Menu(fen)
fen.config(menu=barredemenus)
 
menuFichier=Menu(barredemenus)
 
menuresolution=Menu(barredemenus)
barredemenus.add_cascade(label="Niveau", menu=menuresolution)
menuresolution.add_command(label="Grille", command=grille)
 
 
page=Canvas(fen,width=650,height=650,bg="white")
page.pack(side=LEFT)
 
fen.mainloop()