Bonsoir,

J'ai crée un démineur fonctionnel, avec l'interface graphique tkinter, mais je me suis rendu compte qu'il y avait un problème majeur : il est très lent à cause de l'affichage de la grille tkinter.

Je m'explique : j'ai une procédure "rafraichir" qui me crée une grille de boutons. je l'utilise au départ pour générer la grille, puis à chaque fois que je la rafraichi, ce qui prend forcement du temps.
J'aimerais, si possible, pouvoir changer juste les valeurs contenues dans les boutons (dans une nouvelle fonction, qui ne fera vraiment que rafraichir).


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
def rafraichir(Grille,Grille2,larg,long,bombmax,t1):
 
    #Configurations des lignes et des colonnes
    Grid.rowconfigure(fenetre, 0, weight=1) 
    Grid.columnconfigure(fenetre, 0, weight=1) 
 
    #On créer et on configure le "frame"
    frame=Frame(fenetre)
    frame.grid(row=0, column=0, sticky=N+S+E+W)
 
 
    # On genère la grille de boutons
    for i in range(long): #On parcour la longueur
        Grid.rowconfigure(frame, i, weight=1) 
        for j in range(larg):  #On parcour la largeur
         Grid.columnconfigure(frame, j, weight=1)
 
         #On crée un bouton, avec la valeur correspondant à la grille 2, une couleur de fond, un relief quand on passe la souris dessus
         #Une commande : celle ci utilise une "mini fonction" lambda qui permet d'associer à chaque bouton ses coordonnées, ou fait ensuite à la fonction cliqueG avec ces coordonnées
         btn = Button(frame,text=Grille2[i][j], background="white", overrelief="sunken",command=lambda x=i, y=j: cliqueG(x,y,Grille,Grille2,long,larg,bombmax,t1))
 
         #On ajoute une autre commande au bouton, lorqu'on utilise le clic droit    
         btn.bind("<Button-3>", lambda event,x=i,y=j: cliqueD(x,y,Grille,Grille2,long,larg,bombmax,t1))
         btn.grid(row=i, column=j, sticky=N+S+E+W)
PS : la grille2 correspond à la grille de jeu, c'est dans celle ci que les valeurs se mettent à jouer après avoir creusé.

Merci d'avance pour vos réponses