title: Kivy ScreenManager gives me a black screen
body: <p>I have been trying to create a ping pong game using kivy. I followed the <a href="https://kivy.org/doc/stable/tutorials/pong.html" rel="nofollow noreferrer">tutorial on their website</a> and it worked perfectly! However I wanted to add a start screen. I looked on Google and saw that I should use Kivy's Screen Manager. I put it in my code but however when I press the start button it just does nothing and gives me a black screen. I have been trying to figure it out, but I do not see what is wrong! Probably becuase I do not have much experience with Kivy. Here is my code.
  <br><strong><em>main.py</em></strong></p>
  
  <pre><code>from kivy.app import App
  from kivy.uix.widget import Widget
  from kivy.properties import NumericProperty, ReferenceListProperty, ObjectProperty
  from kivy.vector import Vector
  from kivy.clock import Clock
  from kivy.uix.button import Button
  from kivy.uix.screenmanager import ScreenManager, Screen, SlideTransition
  
  class PingPongPaddle(Widget):
  
      score = NumericProperty(0)
  
      def bounce_ball(self, ball):
          if self.collide_widget(ball):
              vx, vy = ball.velocity
              offset = (ball.center_y - self.center_y) / (self.height / 2)
              bounced = Vector(-1 * vx, vy)
              vel = bounced * 1.1
              ball.velocity = vel.x, vel.y + offset
  class PingPongBall(Widget):
      #Velocity on x and y axis
      velocity_x = NumericProperty(0)
      velocity_y = NumericProperty(0)
  
      #So ball.velocity can be used
      velocity = ReferenceListProperty(velocity_x, velocity_y)
  
      #Moves the ball one step
      def move(self):
          self.pos = Vector(*self.velocity) + self.pos
  
  class PingPongGame(Widget):
      ball = ObjectProperty(None)
      player1 = ObjectProperty(None)
      player2 = ObjectProperty(None)
  
  
      def serve_ball(self, vel=(8, 0)):
          self.ball.center = self.center
          self.ball.velocity = vel
      def update(self, dt):
          self.ball.move()
          #Bounce off the paddles
          self.player1.bounce_ball(self.ball)
          self.player2.bounce_ball(self.ball)
          #Bounce off top and bottom
          if (self.ball.y &lt; 0) or (self.ball.top &gt; self.height):
              self.ball.velocity_y *= -1
  
          #Went off the side
          if self.ball.x &lt; self.x:
              self.player2.score += 1
              self.serve_ball(vel=(4, 0))
          if self.ball.x &gt; self.width:
              self.player1.score += 1
              self.serve_ball(vel=(-4, 0))
  
      def on_touch_move(self, touch):
          #To sense if screen is touched
          if touch.x &lt; self.width / 3:
              self.player1.center_y = touch.y
          if touch.x &gt; self.width - self.width / 3:
              self.player2.center_y = touch.y
  
  class GameScreen(Screen):
      def play(self):
          global game
          game = PingPongGame()
          game.serve_ball()
          #Runs every 60th of a second
          Clock.schedule_interval(game.update, 1.0/60.0)
          return game
  
  class MainScreen(Screen):
      pass
  
  
  
  class PingPongApp(App):
      def build(self):
          screen_manager = ScreenManager(transition=SlideTransition())
  
          screen_manager.add_widget(MainScreen(name="main"))
          screen_manager.add_widget(GameScreen(name="game"))
          return screen_manager
  
  
  
  
  if __name__ == "__main__":
      PingPongApp().run()
  </code></pre>
  
  <p><br><strong><em>pingpong.kv</em></strong></p>
  
  <pre><code>#:kivy 1.11.1
  
  &lt;MainScreen&gt;:
      BoxLayout:
          Button:
              text: "Start!"
              on_press: root.manager.current = "game"
  &lt;GameScreen&gt;:
      on_enter: self.play()
  
  &lt;PingPongBall&gt;:
      size: 75, 75
      canvas:
          Ellipse:
              pos: self.pos
              size: self.size          
  
  &lt;PingPongPaddle&gt;:
      size: 50, 400
      canvas:
          Rectangle:
              pos:self.pos
              size:self.size
  
  &lt;PingPongGame&gt;:
      ball: PingPong_ball
      player1: player_left
      player2: player_right
  
      canvas:
          Rectangle:
              pos: self.center_x - 5, 0
              size: 20, self.height
  
      Label:
          font_size: 140  
          center_x: root.width / 4
          top: root.top - 50
          text: str(root.player1.score)
  
      Label:
          font_size: 140 
          center_x: root.width * 3 / 4
          top: root.top - 50
          text: str(root.player2.score)
  
      Label:
          font_size: 35
          center_x: root.width * 6/7
          top: root.top - 500
          text: "by Me"
  
      PingPongBall:
          id: PingPong_ball
          center: self.parent.center
  
      PingPongPaddle:
          id: player_left
          x: root.x
          center_y: root.center_y
  
      PingPongPaddle:
          id: player_right
          x: root.width - self.width
          center_y: root.center_y
  
  </code></pre>
  
  <p>Thanks in advance!</p>