Hi As suggested by Alan, I wrote a method getcenter as follows *** def getcenter(self): xy=self.canvas.coords(self.id) xcenter=(xy[2]-xy[0])/2 ycenter=(xy[3]-xy[1])/2 return xcenter, ycenter *** However, when I call this method from the instance of Circle class I get error: call ... print items[1].getcenter() error ... AttributeError: 'function' object has no attribute 'getcenter'
What is happening here? Thanks ketan. PS> full code follows ... from Tkinter import * import time import random class Circle: def __init__(self, canvas, xy, ink, delta): self.canvas = canvas self.id = self.canvas.create_oval( -15, -15, 15, 15, fill=ink ) self.canvas.move(self.id, xy[0], xy[1]) self.delta = delta self.start = self.move def __call__(self): return self.start # get things going def move(self): rand=random.randint(1,4) if rand==1: xy = self.canvas.coords(self.id) #print xy if xy[2] >= self.canvas.winfo_width(): self.canvas.move(self.id,-self.delta,0) self.canvas.move(self.id,self.delta,0) elif rand==2: xy = self.canvas.coords(self.id) if xy[0] <= 0: self.canvas.move(self.id,self.delta,0) self.canvas.move(self.id,-self.delta,0) elif rand==3: xy = self.canvas.coords(self.id) if xy[1] <= 0: self.canvas.move(self.id,0,self.delta) self.canvas.move(self.id,0,-self.delta) else: xy = self.canvas.coords(self.id) if xy[3] >= self.canvas.winfo_height(): self.canvas.move(self.id,0,-self.delta) self.canvas.move(self.id,0,self.delta) return self.move def getcenter(self): xy=self.canvas.coords(self.id) xcenter=(xy[2]-xy[0])/2 ycenter=(xy[3]-xy[1])/2 return xcenter, ycenter root = Tk() root.title("Circles") root.resizable(0, 0) frame = Frame(root, bd=5, relief=SUNKEN) frame.pack() canvas = Canvas(frame, width=200, height=200, bd=0, highlightthickness=0) canvas.pack() items = [ Circle(canvas, (60, 70), "blue", 1), Circle(canvas, (100, 120), "green", 1), ] root.update() # fix geometry # loop over items try: while 1: for i in range(len(items)): items[i] = items[i]() root.update_idletasks() # redraw root.update() # process events print items[1].getcenter() time.sleep(0.02) except TclError: pass # to avoid errors when the window is closed _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor