Я не совсем уверен, какова цель, но я могу решить проблемы, которые у вас есть. Страницы не переходят, потому что, даже если вы регистрируете нажатия клавиш, вы не обновляете, какая страница должна отображаться в цикле while. Вы правы в том, что помещение всего в цикл while просто бесконечно зацикливается между func1 () и func2 (), потому что вам также нужны флаги для указания того, что отображать. Вы смотрите, чтобы все части, но не обязательно в нужном месте.
import pygame
from pygame.locals import *
pygame.init()
display_width = 500
display_height = 500
black = (0,0,0)
white = (255,255,255)
gd = pygame.display.set_mode((display_width,display_height))
myfont = pygame.font.SysFont("Arial", 30)
pygame.event.pump()
def func1():
global control1
control1 = 1
gd.fill(white)
letter = myfont.render("Press d",0,(black))
gd.blit(letter,(100,100))
pygame.display.flip()
def func2():
global control2
control2 = 1
gd.fill(white)
letter = myfont.render("Press s",0,(black))
gd.blit(letter,(100,100))
pygame.display.flip()
def func3():
global control2
control2 = 1
gd.fill(white)
letter = myfont.render("Press w",0,(black))
gd.blit(letter,(100,100))
pygame.display.flip()
page1 = True
page2 = False
page3 = False
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_w:
page1 = True
page2 = False
page3 = False
if event.key == pygame.K_d:
page1 = False
page2 = True
page3 = False
if event.key == pygame.K_s:
page1 = False
page2 = False
page3 = True
if page1:
func1()
elif page2:
func2()
elif page3:
func3()
pygame.display.update()
Я вынул все случайные вещи и изменил код, чтобы показать вам простую программу переключения страниц, где пользователь нажимает кнопку и переключает отображаемую страницу. Оттуда вы можете добавить обратно случайные вещи. Ключ к сведению - страницы помечены, чтобы знать, какой из них отображать.