Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

erreur:if pos[2]>=self.largeur_canevas: AttributeError: 'Balle' object has no attribute 'largeur_canevas'

0 votes

Voici le code en entier:

from tkinter import *
import random
import time

class Balle:
     def __init__(self, canvas, couleur):
         self.canvas = canvas
         self.id = canvas.create_oval(10,10,25,25, fill=couleur)
         self.canvas.move(self.id, 245, 100)
         departs=[-3,-2,-1,1,2,3]
         random.shuffle(departs)
         self.x=departs[0]
         self.y=-3
         self.hauteur_canevas=self.canvas.winfo_height()
         self.hauteur_canevas=self.canvas.winfo_width()


     def dessiner(self):
         self.canvas.move(self.id,self.x,self.y)
         pos=self.canvas.coords(self.id)
         if pos[1]<=0:
            self.y=3
         if pos[3]>=self.hauteur_canevas:
            self.y= -3
         if pos[0]<=0:
             self.x=3
         if pos[2]>=self.largeur_canevas:
             self.x=-3


tk=Tk()
tk.title("Jeu")
tk.resizable(0, 0)
tk.wm_attributes("-topmost", 1)
canvas = Canvas(tk, width=500, height=400, bd=0, highlightthickness=0)
canvas.pack()
tk.update()


balle = Balle(canvas,'red')

while 1:
    balle.dessiner()
    tk.update_idletasks()
    tk.update()
    time.sleep(0.01)
demandé 8-Jul-2016 par anonyme
edité 8-Jul-2016 par max

Le message d'erreur te dit: l'objet 'balle' n'a pas d'attribut largeurcanevas. Cherche d'ou vient ton attribut self.largeurcanevas. Et la tu vas te rendre compte que tu as fait une étourderie.

2 Réponses

0 votes
 
Meilleure réponse

Dans ta classe Balle, tu as défini 2 fois self.hauteurcanvas au lieu de self.largeurcanvas

répondu 8-Jul-2016 par benjamin (402 points)
0 votes

Essaye de remplacer
self.hauteur_canevas=self.canvas.winfo_width()
Par
self.largeur_canevas=self.canvas.winfo_width()

répondu 9-Jul-2016 par anonyme
...