Функция Pygame с петлями - PullRequest
0 голосов
/ 18 октября 2018

Хорошо, поэтому я пишу сценарий, который управляет двигателями с помощью щитка двигателя sbc с моей Raspberry Pi 3B.

Проблема, с которой я столкнулся, заключается в том, что, если я просто запустил скрипт, на долю секунды появится окно, позволяющее нажать клавишу для перемещения двигателя вперед или любые другие клавиши, которые я уже определил всценарий, но он длится всего секунду, прежде чем окно автоматически закрывается, и я возвращаюсь в терминал.

Теперь, когда я пытаюсь добавить цикл, чтобы сохранить работающий код, окно остается открытым, однако оно больше не распознаеткогда я нажимаю клавишу, определенную в сценарии ... Я потратил часы на изучение и изменение сценария, который я написал, и не смог найти решение.Я очень плохо знаком с Python и ценю любые предоставленные данные.

Также я использую Python 3.6, заранее спасибо

 import pygame
 import sys
 import pygame.locals
 import PiMotor
 import time

 m1 = PiMotor.Motor("MOTOR1",1)
 m2 = PiMotor.Motor("MOTOR2",1)


pygame.init()
(width, height) = (300, 200)
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption('Johnny, motor controls!')
pygame.event.pump() 

for event in pygame.event.get():
if event.type == pygame.locals.QUIT:




 if event.type == pygame.KEYDOWN:
 if event.key == pygame.K_a:

           m1.forward(100), time.sleep(0)
  if event.type == pygame.KEYUP:
  if event.key == pygame.K_a:
      m1.stop()
  if event.type == pygame.KEYDOWN:
  if event.key == pygame.K_LEFT:

            m1.forward(100)
   if event.type == pygame.KEYUP:
      if event.key == pygame.K_LEFT:
       m1.stop()

1 Ответ

0 голосов
/ 18 октября 2018

Вам просто нужно добавить while True:, когда вы получите события и проверить, когда выйти.

Если вы попробовали это, и оно не сработало, возможно, вы ошиблись в своем отступе?Я вижу, что это неправильно в коде, который вы разместили.

Что-то вроде:

while True:
    for event in pygame.event.get():
        if event.type == pygame.locals.QUIT:
            pygame.quit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_a:
                m1.forward(100), time.sleep(0) # BTW, do you really need this sleep?
            [... Rest of your code ...]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...