for pygame.event.get()中的事件:pygame.error:使用ssh时未初始化视频系统

时间:2016-08-07 10:30:00

标签: python joystick

以下是我尝试通过ssh运行到我的覆盆子pi中的代码。当键盘和显示器直接连接到树莓派时,它通常可以正常工作,但是当我使用ssh时它不会运行。

import pygame, sys, time
from pygame.locals import *

pygame.init()
pygame.joystick.init()
joystick = pygame.joystick.Joystick(0)
joystick.init()
#screen = pygame.display.set_mode((400,300))
#pygame.display.set_caption('Hello World')

interval = 0.01

# get count of joysticks=1, axes=27, buttons=19 for DualShock 3

joystick_count = pygame.joystick.get_count()
print("joystick_count")
print(joystick_count)
print("--------------")

numaxes = joystick.get_numaxes()
print("numaxes")
print(numaxes)
print("--------------")

numbuttons = joystick.get_numbuttons()
print("numbuttons")
print(numbuttons)
wprint("--------------")

loopQuit = False
while loopQuit == False:

    # test joystick axes
    # outstr = ""
    # for i in range(0,4):
    #       axis = joystick.get_axis(i)
    #       outstr = outstr + str(i) + ":" + str(axis) + "|"
    # print(outstr)

    # test controller buttons
    outstr = ""
    for i in range(0,numbuttons):
        button = joystick.get_button(i)
        outstr = outstr + str(i) + ":" + str(button) + "|"
    print(outstr)

    for event in pygame.event.get():
        if event.type == QUIT:
            loopQuit = True
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                loopQuit = True

我得到的错误是     Traceback(最近一次调用最后一次):         文件" testing_joystick.py",第47行,in         对于pygame.event.get()中的事件:             pygame.error:视频系统未初始化

有人可以帮我弄清楚如何解决这个错误吗?

3 个答案:

答案 0 :(得分:0)

你还没有初始化你的窗口。看起来您可能已经或可能没有对其进行评论:#screen = pygame.display.set_mode((400, 300))。许多pygame的事件都依赖于窗口。只需取消注释您的屏幕初始化,它应该可以正常工作。

答案 1 :(得分:0)

我知道问题发布已经有一段时间了,但是今天我也遇到了同样的问题。

对我来说, sudo 命令解决了ssh问题。

sudo python code_path.py

答案 2 :(得分:0)

我遇到了类似的问题。当没有X服务器可用时就会出现问题,这就是为什么当您将监视器连接到Raspberry时它可以工作的原因。

一种解决方案是使用X转发选项运行 ssh

    ssh -X pi@raspberry_ip_address

然后您的程序应正常运行:

    python your_code.py

希望这对其他人有帮助。