Bonjour,
Ci dessous la maquette d'un programme que je désire écrire et qui ne fonctionne pas.
Je voudrai modifier l'instance cellule de la classe carre(object) qui se trouve dans Application(tk.Tk) via une instance de la classe menuPerso(tk.Menu)
Ca ne fonctionne pas du tout, le système me dit que menuPerson n'a pas d'attribut cellule!
Je pensai (évidemment à tort) que self.cellule allait être accessible partout dans l'application, grâce à self.

Comment puis je faire?

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
 
class menuPerso(tk.Menu):
    def __init__(self,parent):
        super().__init__(parent,tearoff=1)
        self.parent=parent
        self.add_command(label="Choisir",command=self.choisir)
        self.parent.bind("<Button-3>",self.pop_up)
    def pop_up(self,evt):
        self.post(evt.x_root, evt.y_root)
    def choisir(self):
        self.cellule.index=20
        self.can.itemconfigure(self.cellule.chiffre,text=20)
 
class Carre(object):
    def __init__(self,canevas,index,x0,y0):
        self.index=index
        self.x0,self.y0=x0,y0
        self.chiffre=canevas.create_text(x0,y0,text=index)
 
class Application(tk.Tk):
    def __init__(self):
        super().__init__()
        self.can=tk.Canvas(self,width=200,height=200)
        self.can.grid(row=0,column=0)
        self.cellule=Carre(self.can,10,60,80)
        menuPerso(self)
 
app=Application()
app.mainloop()