Du musst die Joysticks entweder über die Event-Schleife abfragen, oder selber dafür sorgen, dass die Werte von der Hardware abgefragt werden: `pygame.event.pump()`. Steht bei mir gleich im zweiten Absatz in der Pygame-Dokumentation unter `Joystick`.
Anmerkungen zum Quelltext: Statt `range()` besser `xrange()` verwenden, wenn man nicht wirklich eine Liste mit Zahlen benötigt.
In der zweiten ``for``-Schleife wäre es "pythonischer" gleich über die Objekte in der Liste zu iterieren, statt den Umweg über den Index zu gehen.
``print`` ist (noch) keine Funktion, die Klammern sind also überflüssig bis irreführend.
`tempString` ist überflüssig, da kann man auch gleich in der Schleife das ``print`` platzieren. Und Zeichenkettenformatierung verwenden, anstelle des umständlichen und (IMHO) unübersichtlicheren Verkettens von Zeichenketten.
Nach dem Style Guide sollten die Namen statt `jCount` und `tempString` `j_count` und `temp_string` heissen.
Ungetestet:
Code: Alles auswählen
import time
import pygame
def main():
pygame.init()
joysticks = list()
for i in xrange(pygame.joystick.get_count()):
joystick = pygame.joystick.Joystick(i)
joystick.init()
joysticks.append(joystick)
while True:
pygame.event.pump()
for joystick in joysticks:
print ('Count: %d Axis0: %s Axis1: %s Button0: %s'
% (len(joysticks),
joystick.get_axis(0),
joystick.get_axis(1),
joystick.get_button(0)))
time.sleep(1)