Bonjour tout le monde,
Tout d'abord j'espère que je suis au bon endroit.
J'aimerai faire des petits jeux de sociétés avec Tkinter, ma question est toute bête mais je n'ai pas trouvé la réponse après pas mal de recherche en FR comme en anglais. D'où le fait que je vienne poser ma question ici.
J'utilise le module Tkinter pour réaliser des interfaces graphiques, avec une grille de boutons qui correspond à une surface d'un plateau, qui peut aller d'une grille 3x3 à même 12x12 --> j'ai réduit le nombre de lignes pour ne pas avoir à définir les X bouttons un par un, avec un simple for in range. Mon premier exercice (réussi) était de trouver la position de chaque bouton dans la grille, j'ai utilisé un lambda ou une fermeture et cela fonctionne bien. Cependant les boutons que je crée n'ont pas de nom car je ne peux pas (ou ne sais pas encore comment) définir de nom de variable en série et avec une limite indéfinie.
J'arrive désormais à mon problème, dans un jeu avec des pions, ces derniers se déplacent de cases en cases, l'objectif est quand je clique sur une case, la case sur laquelle j'appuie change de texte (devienne vide par exemple) mais comme je n'ai pas pu donner de nom à mes boutons à cause de la création de boutons par grille, ils n'ont pas de noms, et donc je ne peux pas faire boutonX.set('text' = ...).
Comment paramétrer un bouton qui n'a pas de nom ? Ou comment lui donner un nom que je puisse retrouver par la suite ? Ou alors plus simplement comment paramétrer un bouton sur lequel je clique (comme un self).
Mon code :
Voilà merci à tous si vous voulez que je complète certains points n'hésitez pas !
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 import tkinter as tk from tkinter import Tk, Label from tkinter import * from functools import partial from tkinter.messagebox import * tableau = [ [0, 1, 2], [3, 4, 5], [6, 7, 8] ] #def fermeture(x): def test(x): resultat.set(f'{x}') boutton.config(text='SL ') # ---> Ligne où je souhaites reconfigurer le 'text' de n'importe quel bouton sur lequel je clique, bien evidemment le "boutton" n'est pas défini donc erreur ici #return test (si on utilise la fermeture) root = Tk() resultat = StringVar() resultat.set("Clik sur un bouton.") Label(root, textvariable=resultat).grid(row=10, column=10) for ligne in range(3): for cell in range(3): tk.Button(root, text="case{}{}".format(ligne, cell), command=lambda ligne=ligne, cell=cell: test((ligne, cell))).grid(row=ligne, column=cell) root.mainloop()
Partager