title: Kivy binding to on_property doesn't seem to work
body: <p>Essentially, I have a grid with squares, and I keep track of which squares are occupied with a BooleanProperty on each square. Here's a simplified version of all the places in my code I declare the "occupied" property:</p>
  
  <pre><code>class Board(GridLayout):
      def __init__(self):
          super().__init__()
          self.cols = 4
          self.grid = []
          self.create_slots()
  
  
  
  
      def create_slots(self):
          for i in range(10):
              self.grid.append([])
              for j in range(4):
                  temp = Square(i,j, "sideboard")
                  self.grid[i].append(temp)
                  self.add_widget(temp)
                  temp.bind(on_occupied = self.do_a_thing)
  
  
      def do_a_thing(self):
          for square in self.children:
              #do a thing
  
  class Square(Button):
      def __init__(self, row, col, type):
          self.row = row
          self.col = col
          self.id = str(self.row) + "," + str(self.col)
          self.type = type
          self.occupied = BooleanProperty(False)
          super().__init__()
  </code></pre>
  
  <p>My goal is to bind the "do_a_thing" method to be called each time the value of the square's "occupied" property changes. Because the Square class is used elsewhere in my app, I don't want to set the callback for on_occupied in the kivy language, and I was hoping to avoid creating a Square sub-class just to change the one binding.</p>
  
  <p>When I run my code, it throws no errors, and I've verified that the "occupied" property does actually change. But the "do_a_thing" method never gets fired. Can anyone tell me what I'm doing wrong?</p>