Logiciel python tkinter
Bonjour,
je souhaiterais afficher plusieurs cercles dans un canevas et pouvoir modifier leur remplissage. J'ai une solution en programmation "linéaire" qui fonctionne. J'essaie de la transposer en POO en créant une classe mais la modification du remplissage ne fonctionne pas.
[code]
#==============================================================================
class Lampe (): #-- les lampes s'affichent dans le canevas cnv à créer
def __init__(self , pte, pts):
self.pte=pte #-- Entrée lampe
self.pts=pts #-- Sortie lampe
r=((self.pts.y - self.pte.y)**2 + (self.pts.x - self.pte.x)**2)**0.5/2
mx=(self.pts.x + self.pte.x)/2 #-- abscisse milieu
my=(self.pts.y + self.pte.y)/2 #-- ordonnée milieu
lmp=cnv.create_oval(mx-r , my-r , mx+r , my+r , fill="grey")
def allumer (self):
cnv.itemconfig(self.lmp, fill="red")
[code]
Y a-t-il une solution ?
Cordialement.
je souhaiterais afficher plusieurs cercles dans un canevas et pouvoir modifier leur remplissage. J'ai une solution en programmation "linéaire" qui fonctionne. J'essaie de la transposer en POO en créant une classe mais la modification du remplissage ne fonctionne pas.
[code]
#==============================================================================
class Lampe (): #-- les lampes s'affichent dans le canevas cnv à créer
def __init__(self , pte, pts):
self.pte=pte #-- Entrée lampe
self.pts=pts #-- Sortie lampe
r=((self.pts.y - self.pte.y)**2 + (self.pts.x - self.pte.x)**2)**0.5/2
mx=(self.pts.x + self.pte.x)/2 #-- abscisse milieu
my=(self.pts.y + self.pte.y)/2 #-- ordonnée milieu
lmp=cnv.create_oval(mx-r , my-r , mx+r , my+r , fill="grey")
def allumer (self):
cnv.itemconfig(self.lmp, fill="red")
[code]
Y a-t-il une solution ?
Cordialement.
Réponses
-
Si tu as une solution qui fonctionne et une qui ne fonctionne pas, il doit être facile de « dichotomer ». As-tu mis des print() à des endroits stratégiques pour vérifier quelles portions de ton nouveau code sont exécutées ?
-
Le code fonctionne (les lampes s'affichent lors de leur déclaration) mais l'accès au remplissage donne le message d'erreur suivant :
AttributeError: 'Lampe' object has no attribute 'lmp'
Je ne sais pas comment accéder à cet attribut "fill" dans une classe .
En programmation linéaire je faisais simplement cnv.itemconfig(lampe_1, fill="red")
avec lampe_1 = cnv.create_oval(400,35,440,75) par exemple . -
essaie de remplacer
lmp=cnv.create_oval(mx-r , my-r , mx+r , my+r , fill="grey")
parself.lmp=cnv.create_oval(mx-r , my-r , mx+r , my+r , fill="grey")
-
Mais oui , c'est ça qui me manquait et c'est très logique .
Un grand merci raoul.S pour cette aide aussi rapide que pertinente . Je vais pouvoir continuer mon application .
Connectez-vous ou Inscrivez-vous pour répondre.
Bonjour!
Catégories
- 165.6K Toutes les catégories
- 66 Collège/Lycée
- 22.2K Algèbre
- 37.7K Analyse
- 6.3K Arithmétique
- 61 Catégories et structures
- 1.1K Combinatoire et Graphes
- 13 Sciences des données
- 5.1K Concours et Examens
- 26 CultureMath
- 51 Enseignement à distance
- 2.9K Fondements et Logique
- 10.8K Géométrie
- 86 Géométrie différentielle
- 1.1K Histoire des Mathématiques
- 79 Informatique théorique
- 3.9K LaTeX
- 39K Les-mathématiques
- 3.5K Livres, articles, revues, (...)
- 2.7K Logiciels pour les mathématiques
- 30 Mathématiques et finance
- 342 Mathématiques et Physique
- 5K Mathématiques et Société
- 3.3K Pédagogie, enseignement, orientation
- 10.1K Probabilités, théorie de la mesure
- 806 Shtam
- 4.2K Statistiques
- 3.8K Topologie
- 1.4K Vie du Forum et de ses membres