我正在尝试用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版本。) 感谢您的每一个信息
答案 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()