title: Kivy Label.text Property doesn't update on the UI
body: <p>I have an issue with the updated text property of a label not displaying correctly on my UI. I check the text property and can verify that it is being set to the new value but that value isn't being shown when the label is rendered.</p>
  
  <p>The Label is on a different Screen which I am switching to using a ScreenManager. The Sub Widgets and tree of the screen are constructed in separate .kv files (I have used the load_string() Builder method in the example but the outcome is the same) </p>
  
  <p>Here is a simplified example of what is going on:</p>
  
  <pre><code>from kivy.config import Config
  Config.set('graphics', 'width', '300')
  Config.set('graphics', 'height', '200')
  Config.set('graphics', 'resizable', '0')
  
  from kivy.app import App
  from kivy.uix.screenmanager import ScreenManager, Screen
  from kivy.uix.boxlayout import BoxLayout
  from kivy.lang import Builder
  
  Builder.load_string("""
  &lt;screen1&gt;:
      Button:
          id: button
          text: 'Press me to Update Screen2'
          on_press:
              root.update_screen2()
  
  &lt;screen2&gt;:
      Label:
          id: mainLabel
          text: 'I have not been updated'
  """)
  
  class screen1(Screen):
  
      def __init__(self, **kwargs):
          """
              Set super and store the id of the button
          """
          super(screen1, self).__init__(**kwargs)
          self.button = self.ids.button.__self__
          return
  
      def update_screen2(self):
          """
              send text 1 and text 2 to the screen2 object 
              for it to set on it's label
          """
          text1 = 'Hi There'
          text2 = 'Does this work'
          screen2.update_label(screen2(),text1, text2)
          return
  
  
  class screen2(Screen):
  
      def __init__(self, **kwargs):
          """
              set super ond store the id of the label
          """
          super(screen2, self).__init__(**kwargs)
          self.mainLabel = self.ids.mainLabel.__self__
          return
  
      def update_label(self, text1, text2):
          """
              using text1 and text2, update the text property of the label
              the output of each print() shows the text property is being updated
              it just doesn't display on the UI
          """
          print(self.mainLabel.text)
          self.mainLabel.text = text1 + '\n\n' + text2
          print(self.mainLabel.text)
          screenManager.current = 'screen2'
          return
  
  screenManager = ScreenManager()
  
  
  class MainApp(App):
      def build(self):
          #root widget is abox layout
          self.root = BoxLayout()
  
          #instantiate the screen objects
          self.screen1 = screen1(name='screen1')
          self.screen2 = screen2(name='screen2')
  
          #add the screens to the screenManager
          screenManager.add_widget(self.screen1)
          screenManager.add_widget(self.screen2)
  
          #set the current screen
          screenManager.current = 'screen1'
  
          #add the screenManager to the root widget and return it
          self.root.add_widget(screenManager)
          return self.root
  
  
  if __name__ == '__main__':
      MainApp().run()
  </code></pre>
  
  <p>I have tried various things such as changing how i reference the label widget in python, asking the canvas to update or creating a 'screen2()' object to call the method from in the screen1 but to no avail.
  What is it that I'm missing?</p>