Python: 有什么方法可以在不使用 pygame.RESIZABLE 的情况下仅调整 pygame window 一次?

Python: Is there any way to resize a pygame window only once without using pygame.RESIZABLE

我希望能够为我的游戏创建 500x500 的主菜单,并且在该主菜单循环中,我想使用命令 'q' 运行 主游戏循环。如果按下 'q',则需要调整 window 的大小以适应游戏的所有资产

代码:

import pygame
import sys

win = pygame.display.set_mode((500, 500))

def main_menu():

    running = True
    frame = 30
    clock = pygame.time.Clock()


    while running:
            
        for event in pygame.event.get():
        
            win.fill(220,220,220)
            
            # When the main menu is run, the window should be 500x500
        
            if event.type == pygame.QUIT:
                running = False
                pygame.quit()
                sys.exit()
        
            if event.type == KEYDOWN:
            
                if event.key == K_q:
                    main()
                    # When main is run, I want the window to be resized to 900, 700
                   

        pygame.display.update()

    clock.tick(frame)
        


 if __name__ == '__main__':
     main_menu()

我最初尝试这样做,但它一直出现故障 window 所以我停止了:

if event.key == K_q:
    pygame.display.set_mode((900, 700))
    main()

嘿,你是 pygame 的新手吗? 你的代码没有正确地缩进,你把很多东西放在了错误的地方:-

if '__name__ = __main__' 有一个 space

main() 还有

你的 win.fill(color) 也需要 win.fill((color))

要更改屏幕尺寸,您需要执行 win = pygame.display.setmode((new screen size))

我已修复代码中的所有错误,当您按 q 时屏幕尺寸会发生变化:-

这是代码:-(我也是新来的,希望这对您有所帮助,请为我的回答点赞并将其设置为正确答案)

import pygame
from pygame.locals import *
import sys

win = pygame.display.set_mode((500, 500))

def main_menu():
    running = True
    frame = 30
    clock = pygame.time.Clock()
    while running:
        global win
        win.fill((255,255,255))
        
        for event in pygame.event.get():
        
        # When the main menu is run, the window should be 500x500
    
            if event.type == pygame.QUIT:
                running = False
                pygame.quit()
                sys.exit()
    
            if event.type == KEYDOWN:
        
                if event.key == K_q:
                    win = pygame.display.set_mode((900,700))
                    # When main is run, I want the window to be resized to 900, 700
        pygame.display.update()
    clock.tick(frame)
if __name__ == '__main__':
    main_menu()