[Pygui] Show_text only appearing in last widget

Colin Brown baykiwi at gmail.com
Sun Dec 12 10:24:05 CET 2010


Hi

I am expecting to see text written into each of the coloured squares  
but I can only see text in the last square; why is this?

Cheers
Colin Brown

Code as run on MacOSX:


from GUI import Application, Document, Window, FileType, View
from GUI.StdColors import black, green

class myApp(Application):
   def __init__(self):
     Application.__init__(self)
     self.item_type = FileType(name="Item Document", suffix = 'itm')
     self.file_type = self.item_type
   def open_app(self):
     self.new_cmd()
   def make_document(self, fileref):
     return ItemDoc(file_type = self.item_type)
   def make_window(self, document):
     win = Window(size=(300,160), title='Named block test',  
document=document)
     view = ItemView(model=document)
     win.place(view, left=0, top=0, right=0, bottom=0, sticky='nsew')
     win.show()
   def zero_windows_allowed(self):
     return

class ItemView(View):
   def __init__(self,*args, **kargs):
     View.__init__(self,*args, **kargs)
     for n in range(5):
       for m in range(2):
         self.model.add_item(Item((50*(n+1),50*(m+1)), 'x%sy%s' %  
(n,m)))
   def draw(self, canvas, update_rect):
     canvas.fillcolor = green
     canvas.pencolor = black
     for item in self.model.items:
       item.draw(canvas)

class ItemDoc(Document):
   def new_contents(self):
     self.items = []
   def add_item(self, item):
     self.items.append(item)
     self.changed()
     self.notify_views('item_changed', item)

class Item:
   def __init__(self, c, t):
     self.rect, self.text = (c[0]-20,c[1]-20,c[0]+20,c[1]+20), t
   def contains(self, x, y):
     return pt_in_rect((x,y), self.rect)
   def draw(self, canvas):
     l,t,r,b = self.rect
     canvas.moveto(l,t)
     canvas.lineto(r,t)
     canvas.lineto(r,b)
     canvas.lineto(l,b)
     canvas.closepath()
     canvas.fill_stroke()
     canvas.moveto(l+9,t+24)
     canvas.show_text(self.text)

myApp().run()



More information about the Pygui mailing list