#python #pygame #surface
#python #pygame #Поверхность
Вопрос:
У меня есть следующий код на Python 3 (и pygame), но белая поверхность не отображается, и я не понимаю, почему. Имеет ли это какое-то отношение к тому, где он был размещен? Я пытался удалить отступы, но это тоже не сработало? Код выглядит следующим образом:
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()
Комментарии:
1. Вы получаете сообщение об ошибке?
2. «Я пытался удалить отступы, но это тоже не сработало?» — Да, не делай этого. Случайное добавление и удаление отступов в вашем коде вам не поможет.
3. лист — ваш комментарий тоже не очень полезен. Я имел в виду удаление отступов в коде, относящемся к чертежу поверхности. Тристан — нет, ошибки нет. Просто пустой черный экран
4. @pythoncarrot Но вся причина, по которой ваше окно не отображается, заключается в вашем отступе.
5. неверно. Программа работает отлично. (Возможно, я неправильно вставил его в stackoverflow, поскольку это испортило мой отступ). Просто, когда я добавляю бит поверхности, он не рисуется. Обратите внимание на редактирование выше — при таком использовании отображается черный экран, но не желаемая поверхность.
Ответ №1:
Итак, похоже, что ваш отступ неверен.
Вам необходимо определить поверхность и обновить экран и т. Д. Вне цикла событий.
По крайней мере, вы должны переместить 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()