title: Kivy label does not update until after next function is called
body: <p>I am working on a doorbell project using a raspberry pi 3 and the 7inch touchscreen display. I am using kivy to power the GUI however have run into the following issue I cannot seem to solve.</p>
  
  <p>The kivy app loads on a button press and gives the user options for authentication (e.g rfid, keypad etc) On selecting an option it takes the user to another screen telling them to input their pin in the case of the keypad option.</p>
  
  <p>This is just the snippet for the keypad screen:</p>
  
  <pre><code>class KeypadScreen(Screen):
      keypadTextTest = StringProperty("Please Input 4 Digit Passcode")
  
      def Decision(self, *args):
          keypadOutput = FourDigitCodeCheck()
          if keypadOutput == True:
              self.change_text()
              Clock.schedule_interval(self.change_text, 0.1)
              self.change_text()
              doorOpen()
              return
  
      def change_text(self, *args):
          self.keypadTextTest = "Door Open"
  </code></pre>
  
  <p>When the user inputs their pin and the code returns True (Ie it is the correct pin) I wish for the label to change to say "Door Open" and then run the doorOpen function (seen below) which for now just turns an LED on and off.</p>
  
  <pre><code>def doorOpen():
      print ("Door Open : Please Enter")
      GreenLED("ON")
      sleep(5)
      GreenLED("OFF")
      return
  </code></pre>
  
  <p>Currently however the doorOpen function is called before the label changes meaning that the LED turns on, then off 5 seconds later and then the label changes.</p>
  
  <p>I have tried various different methods of updating the label text and have even tried adding in different alterations afterwards to try and force an update before the doorOpen function is ran however to no avail.</p>
  
  <p>Any input would be greatly appreciated as has been a tedious afternoon. Below is the kivy lang snippet for the keypad screen encase something is wrong there:</p>
  
  <pre><code>&lt;KeypadScreen&gt;:
      on_enter: root.Decision()
      BoxLayout:
          orientation: 'vertical'
  
          BoxLayout:
              orientation: 'vertical'
              Label:
                  id: keypadtext
                  text: root.keypadTextTest
                  font_size: 50
  </code></pre>
  
  <p>Pastebin of full python script: <a href="https://pastebin.com/K2CnnmVB" rel="nofollow noreferrer">https://pastebin.com/K2CnnmVB</a></p>
  
  <p>Pastebin of full Kivy script: <a href="https://pastebin.com/9mgZFxyx" rel="nofollow noreferrer">https://pastebin.com/9mgZFxyx</a> </p>