Я видел, как другие решения этой проблемы говорят, что вам нужно либо вызвать pygame.event.pump (), либо инициализировать джойстик вне while l oop. Однако даже с этими решениями я получаю 0 для значений осей джойстика.
Если я раскомментирую только pygame.display.set_mode((1, 1))
, то код работает должным образом, и значения выводятся на консоль.
Есть ли способ получить значения осей без создания дополнительного окна?
Кроме того, я использую python 3.6 на Windows 10.
import pygame
FRAMES_PER_SECOND = 20
pygame.init()
pygame.joystick.init()
# pygame.display.set_mode((1,1))
# Used to manage how fast the screen updates.
clock = pygame.time.Clock()
xboxController = pygame.joystick.Joystick(0)
xboxController.init()
# Loop until the user presses menu button
done = False
print('Found controller\nStarting loop...')
while not done:
pygame.event.pump()
for event in pygame.event.get():
if event.type == pygame.JOYBUTTONDOWN and event.button == 7:
print(f'Exiting controller loop')
done = True
for i in range(xboxController.get_numaxes()):
print(f'Axis {i}: {xboxController.get_axis(i)}')
# pygame.display.flip()
clock.tick(FRAMES_PER_SECOND)
Вывод:
pygame 1.9.6
Hello from the pygame community. https://www.pygame.org/contribute.html
Found controller
Starting loop...
Axis 0: 0.0
Axis 1: 0.0
Axis 2: 0.0
Axis 3: 0.0
Axis 4: 0.0
.
.
.