 <p>Sometimes this problem happens when you <strong>don´t make any calls to some of Pygames <em>event queue functions</em> in each frame</strong> of your game, as the <a href="http://www.pygame.org/docs" rel="nofollow">Documentation</a> states.</p> <p><strong>If you are not using any other event functions</strong> in your main game, you <em>should</em> <strong>call <a href="http://www.pygame.org/docs/ref/event.html#pygame.event.pump" rel="nofollow"><code>pygame.event.pump()</code></a> to allow Pygame to handle internal actions</strong>, such as joystick information.</p> <p>Try the following updated code:</p> <pre><code>while True: pygame.event.pump() #allow Pygame to handle internal actions joystick_count = pygame.joystick.get_count() for i in range(joystick_count): joystick = pygame.joystick.Joystick(i) joystick.init() name = joystick.get_name() axes = joystick.get_numaxes() hats = joystick.get_numhats() button = joystick.get_numbuttons() joy = joystick.get_axis(0) print(name, joy) </code></pre> <p><strong>An alternative</strong> would be to <strong>wait for events generated by your joystick</strong> (such as <code>JOYAXISMOTION</code>) by using the <code>pygame.event.get()</code> function for instance:</p> <pre><code>while True: #get events from the queue for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() if event.type == pygame.JOYAXISMOTION and event.axis == 0: print(event.value) joystick_count = pygame.joystick.get_count() for i in range(joystick_count): joystick = pygame.joystick.Joystick(i) joystick.init() #event queue will receive events from your Joystick </code></pre> <p>Hope this helps a little bit :)</p>