【问题标题】:raspberry pi touch screen - Pygame.error: video system not initialized树莓派触摸屏 - Pygame.error:视频系统未初始化
【发布时间】:2015-03-29 12:09:26
【问题描述】:

我正在使用来自website 的代码块,这是我正在使用的部分:

import pygame
from pygame.locals import *
import os
from time import sleep
import RPi.GPIO as GPIO

#Setup the GPIOs as outputs - only 4 and 17 are available
GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.OUT)
GPIO.setup(17, GPIO.OUT)

#Colours
WHITE = (255,255,255)

os.putenv('SDL_FBDEV', '/dev/fb1')
os.putenv('SDL_MOUSEDRV', 'TSLIB')
os.putenv('SDL_MOUSEDEV', '/dev/input/touchscreen')

pygame.init()
pygame.mouse.set_visible(False)
lcd = pygame.display.set_mode((320, 240))
lcd.fill((0,0,0))
pygame.display.update()

font_big = pygame.font.Font(None, 50)

touch_buttons = {'17 on':(80,60), '4 on':(240,60), '17 off':(80,180), '4 off':(240,180)}

for k,v in touch_buttons.items():
    text_surface = font_big.render('%s'%k, True, WHITE)
    rect = text_surface.get_rect(center=v)
    lcd.blit(text_surface, rect)

pygame.display.update()

while True:
    # Scan touchscreen events
    for event in pygame.event.get():
        if(event.type is MOUSEBUTTONDOWN):
            pos = pygame.mouse.get_pos()
            print pos
        elif(event.type is MOUSEBUTTONUP):
            pos = pygame.mouse.get_pos()
            print pos
            #Find which quarter of the screen we're in
            x,y = pos
            if y < 120:
                if x < 160:
                    GPIO.output(17, False)
                else:
                    GPIO.output(4, False)
            else:
                if x < 160:
                    GPIO.output(17, True)
                else:
                    GPIO.output(4, True)
    sleep(0.1)

当我(以 root 权限)运行它时,我得到了这个错误:

  File "touchscreen.py", line 20, in <module>
    pygame.mouse.set_visible(False)
pygame.error: video system not initialized

我正在尝试为我的项目在树莓派触摸屏上创建一个简单的按钮界面,欢迎任何工作解决方案。修复此代码对我来说无关紧要,替代代码同样有效。

谢谢你,

马修·伍德

【问题讨论】:

    标签: python pygame touchscreen raspberry-pi2


    【解决方案1】:

    我已经解决了这个问题,解决方法是输入设备被称为mouse0而不是触摸屏。

    【讨论】:

      【解决方案2】:

      试试这个:

      disp_no = os.getenv('DISPLAY')
      if disp_no:
          print "I'm running under X display = {0}".format(disp_no)
          pygame.mouse.set_visible(True)
      
      else:
          drivers = ['directfb', 'fbcon', 'svgalib']
          found = False
          for driver in drivers:
              if not os.getenv('SDL_VIDEODRIVER'):
                  os.putenv('SDL_VIDEODRIVER', driver)
              try:
                  pygame.display.init()
              except pygame.error:
                  print 'Driver: {0} failed.'.format(driver)
                  continue
              found = True
              pygame.mouse.set_visible(False)
              break
      
          if not found:
              raise Exception('No suitable video driver found!')
      
      os.environ["SDL_FBDEV"] = "/dev/fb1"
      os.environ["SDL_MOUSEDEV"] = "/dev/input/touchscreen"
      os.environ["SDL_MOUSEDRV"] = "TSLIB"
      

      例如直接在你的 for k,v 线上方

      这将尝试在 X-Windows 中运行(使用可见的鼠标指针,或者在最好的可用帧缓冲区驱动程序中)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多