title: Changing screens from a Spinner on_text problem
body: <p>I'm wanting to create a type of workflow using ScreenManager that progresses as options are selected. I have several screens defined within ScreenManager and within one screen I have created a Spinner with several options. I'm wanting to call a Function from the on_text and pass the selected Spinner value, perform a task based on the passed value and then move to the next screen in the workflow.</p>
  
  <p>I've created a Function inside a class (Screen) with only a print() for testing purposes. When I select an option from the Spinner nothing happens.</p>
  
  <p>I've only provided what I think is the relevant code...</p>
  
  <p>kv file:</p>
  
  <pre><code>&lt;HomeScreen&gt;:
      name: 'homeScreen'
      BoxLayout:
          orientation: 'horizontal'
  
          Label:
              id: 'home'
              text: 'Home Screen'
  
  
  &lt;NewSession&gt;:
      name: 'newSession'
      BoxLayout:
          orientation: 'vertical'
  
          Label:
              id: new
              text: 'Create New Session'
  
          Spinner:
              size_hint: None, None
              size: 100, 25
              id: category
              font_size: 12
              text: "Food Category" #default value showed
              values: ["Beef","Pork","Poultry", "Fish"] #list of values to show
              on_text: root.SelectCut(category.text)
  
          Widget:
  
  
  &lt;CurrentSession&gt;:
      id: cs
      name: 'currentSession'
      BoxLayout:
          orientation: 'vertical'
  
          Label:
              id: cSession
              text: root.cSession
  
  &lt;History&gt;:
      name: 'history'
      BoxLayout:
          orientation: 'vertical'
  
          Label:
              id: 'history'
              text: 'History Data Screen'
  
  &lt;ScreenManagement&gt;:
      HomeScreen:
      NewSession:
      CurrentSession:
      History:
  
  &lt;AllScreen&gt;:
  
      orientation: 'vertical'
      ScreenManagement:
          id: sm
      BoxLayout:
  
          size_hint_y: None
          height: 60
          spacing: 5
          padding: 5, 5, 0, 5
  
          Button:
              text: 'Home'
              on_press: root.ids.sm.current = 'homeScreen'
          Button:
              text: 'New Session'
              on_press: root.ids.sm.current = 'newSession'
          Button:
              text: 'Current Session'
              on_press: 
                  root.ids.sm.current = 'currentSession'
          Button:
              text: 'History'
              on_press: root.ids.sm.current = 'history'
  </code></pre>
  
  <p>py file:</p>
  
  <pre><code>Builder.load_file("screenLayout.kv")
  
  class ScreenManagement(ScreenManager):
      pass
  
  class HomeScreen(Screen):
      pass
  
  class NewSession(Screen):
  
      def SelectCut(self, text):
          print("In Select Cut")
          print("Food Category: " + text)
          self.sm.current = 'homeScreen'
  
  class CurrentSession(Screen):
      pass
  
  class History(Screen):
      pass
  
  class AllScreen(BoxLayout):
      pass
  
  class WorkingTestApp(App):
  
      def build(self):
          self.root = AllScreen()
          return self.root
  
  if __name__ == '__main__':
      WorkingTestApp().run()
  </code></pre>
  
  <p>I'm not able to figure out why nothing is happening when a selection is made from the Spinner and I'm not sure what the syntax will be from within the Function to move to the next screen.</p>
  
  <hr>
  
  <p>Update:
  Current code (minus imports)</p>
  
  <p>kv:</p>
  
  <pre><code>&lt;HomeScreen&gt;:
      name: 'homeScreen'
      BoxLayout:
          orientation: 'horizontal'
  
          Label:
              id: 'home'
              text: 'Home Screen'
  
  &lt;NewSession&gt;:
      name: 'newSession'
      BoxLayout:
          orientation: 'vertical'
  
          Label:
              id: new
              text: 'Create New Session'
  
          Spinner:
              size_hint: None, None
              size: 100, 25
              id: category
              font_size: 12
              text: "Food Category" #default value showed
              values: ["Beef","Pork","Poultry", "Fish"] #list of values to show
              on_text: root.SelectCategory()
  
          Widget:
  
  &lt;SelectCut&gt;:
      name: 'selectCut'
      BoxLayout:
          orientation: 'vertical'
  
          Label:
              id: 'cut'
              text: 'Select Cut Screen'
  
          Widget:
  
  &lt;CurrentSession&gt;:
      name: 'currentSession'
      BoxLayout:
          orientation: 'vertical'
  
          Label:
              id: cSession
              text: 'Current Session Screen'
  
  &lt;History&gt;:
      name: 'history'
      BoxLayout:
          orientation: 'vertical'
  
          Label:
              id: 'history'
              text: 'History Data Screen'
  
  &lt;ScreenManagement&gt;:
      HomeScreen:
      NewSession:
      SelectCut:
      CurrentSession:
      History:
  
  &lt;AllScreen&gt;:
      orientation: 'vertical'
      ScreenManagement:
          id: sm
      BoxLayout:
  
          size_hint_y: None
          height: 60
          spacing: 5
          padding: 5, 5, 0, 5
  
          Button:
              text: 'Home'
              on_press: root.ids.sm.current = 'homeScreen'
          Button:
              text: 'New Session'
              on_press: root.ids.sm.current = 'newSession'
          Button:
              text: 'Current Session'
              on_press: 
                  root.ids.sm.current = 'currentSession'
          Button:
              text: 'History'
              on_press: root.ids.sm.current = 'history'
  </code></pre>
  
  <p>py:</p>
  
  <pre><code>Builder.load_file("screenLayout.kv")
  
  class ScreenManagement(ScreenManager):
      pass
  
  class HomeScreen(Screen):
      pass
  
  class NewSession(Screen):
      # This Function isn't executing consistently.
      def SelectCategory(self):
          print("Food Category: " + self.ids.category.text)
          self.manager.current = 'selectCut'
  
  class SelectCut(Screen):
      pass
  
  class CurrentSession(Screen):
      pass
  
  class History(Screen):
      pass
  
  class AllScreen(BoxLayout):
      pass
  
  class WorkingTestApp(App):
  
      def build(self):
          self.root = AllScreen()
          return self.root
  
  if __name__ == '__main__':
      WorkingTestApp().run()
  </code></pre>