2016-10-07 4 views
1

У меня есть следующий код в Python 3 (и pygame), но белая поверхность не отображается, и я не понимаю, почему. Связано ли это с тем, где оно было размещено? Я пробовал отступы, но это тоже не сработало? Код выглядит следующим образом:pygame screen не может dislpay

import pygame 
from pygame.locals import* 
pygame.init() 

screen=pygame.display.set_mode((800,600)) 


# Variable to keep our main loop running 
running = True 

# Our main loop! 
while running: 
    # for loop through the event queue 
    for event in pygame.event.get(): 
     # Check for KEYDOWN event; KEYDOWN is a constant defined in pygame.locals, which we imported earlier 
     if event.type == KEYDOWN: 
      # If the Esc key has been pressed set running to false to exit the main loop 
      if event.key == K_ESCAPE: 
       running = False 
      # Check for QUIT event; if QUIT, set running to false 
      elif event.type == QUIT: 
       running = False 

      # Create the surface and pass in a tuple with its length and width 
      surf = pygame.Surface((50, 50)) 
      # Give the surface a color to differentiate it from the background 
      surf.fill((255, 255, 255)) 
      rect = surf.get_rect() 

      screen.blit(surf, (400, 300)) 
      pygame.display.flip() 
+0

Вы получаете ошибку? –

+0

_ «Я пробовал отступы, но это тоже не сработало?» - Да, не делайте этого. Случайное отступы и удаление вашего кода не помогут. –

+0

лист - ваш комментарий также не очень полезен. Я имел в виду отступы от кода, который относится к рисованию поверхности. Тристан - нет, нет ошибки. Просто пустой черный экран –

ответ

0

Таким образом, похоже, что ваш отступ неправильный.

Вам необходимо определить поверхность и обновить экран и т. Д. Вне цикла событий.

По крайней мере, вы должны переместить screen.blit(surf, (400, 300)) и pygame.display.flip() вне цикла событий.

Это оно исправлено:

# Our main loop! 
while running: 
    # for loop through the event queue 
    for event in pygame.event.get(): 
     # Check for KEYDOWN event; KEYDOWN is a constant defined in pygame.locals, which we imported earlier 
     if event.type == KEYDOWN: 
      # If the Esc key has been pressed set running to false to exit the main loop 
      if event.key == K_ESCAPE: 
       running = False 
      # Check for QUIT event; if QUIT, set running to false 
      elif event.type == QUIT: 
       running = False 

    # Create the surface and pass in a tuple with its length and width 
    surf = pygame.Surface((50, 50)) 
    # Give the surface a color to differentiate it from the background 
    surf.fill((255, 255, 255)) 
    rect = surf.get_rect() 

    screen.blit(surf, (400, 300)) 
    pygame.display.flip()