Pygame,操纵杆检测不起作用

时间:2012-07-08 10:15:48

标签: python pygame joystick

我正在尝试用Pygame检测USB操纵杆。 每次运行此代码时程序都会因错误而崩溃: 第10行“操纵杆未初始化”。

import pygame as p

p.init()
stick = p.joystick.Joystick(0)
#get init returns always False
print("initialized:",bool(stick.get_init()))
#getting the name works as it should
print(stick.get_name())
#says always "pygame.error: Joystick not initialized"
print("axis_0",stick.get_axis(0))   
p.quit()

我做错了什么或这是一个错误? (我在Python 3.2和Windows 7上使用最新的pygame版本。) 感谢您的每一个信息

2 个答案:

答案 0 :(得分:4)

我刚刚开始使用Pygame。我先使用pygame.joystick.init()。所以,我想你会用p.init()替换p.joystick.init()

来自Pygame文档:(http://www.pygame.org/docs/ref/joystick.html)

  

您可以调用Joystick.get_name - 获取操纵杆系统名称和   Joystick.get_id - 无需初始化即可获取操纵杆ID功能   操纵杆对象。

我认为你还必须在那里写一句话:

stick.init()

然后初始化棒并从中接收事件。

答案 1 :(得分:-1)

是的,你是对的Jahnz。但我还要检查事件:

import pygame as p

p.init()
stick = p.joystick.Joystick(0)
stick.init()
print("initialized:",bool(stick.get_init()))
print(stick.get_name())

while stick.get_axis(0)*100 < 99:
   print(round(stick.get_axis(0)*100))
   #need for right detection otherwise stick.get_axis always returns 0
   for event in p.event.get(): 
      None
p.quit()