Animation 当我运行这个示例pygame代码时,DOS窗口出现并突然消失,无需等待任何用户输入

Animation 当我运行这个示例pygame代码时,DOS窗口出现并突然消失,无需等待任何用户输入,animation,pygame,window,screen,Animation,Pygame,Window,Screen,当我运行这个示例PyGame代码时,会出现一个命令窗口,并在不等待任何用户输入的情况下突然消失。怎么了?我是一个新手,正在努力学习python。我以前只有VBA的经验 Python版本是:Python 3.8 import pygame import sys pygame.init() win = pygame.display.set_mode((500,500)) pygame.display.set_caption("First Game") x = 50 y = 50 width

当我运行这个示例PyGame代码时,会出现一个命令窗口,并在不等待任何用户输入的情况下突然消失。怎么了?我是一个新手,正在努力学习python。我以前只有VBA的经验

Python版本是:Python 3.8

import pygame
import sys
pygame.init() 

win = pygame.display.set_mode((500,500))
pygame.display.set_caption("First Game") 

x = 50
y = 50
width = 40
height = 60
vel = 5 

run = True 

while run:
    pygame.time.delay(100) 

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

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        x -= vel 

    if keys[pygame.K_RIGHT]:
        x += vel 

    if keys[pygame.K_UP]:
        y -= vel 

    if keys[pygame.K_DOWN]:
        y += vel 
    win.fill((0,0,0))  # Fills the screen with black
    pygame.draw.rect(win, (255,0,0), (x, y, width, height))
    pygame.display.update()
    pygame.quit()
    sys.exit()

您的
pygame.quit()
sys.exit()
都应该在
run
循环之外,以便它们仅在循环退出时执行

您现在拥有的将运行单个迭代,因为它将在该迭代结束时退出。有人说短距离比赛是一场好比赛,但你可能做得太过分了:-)

当我运行你的代码时,我看到的是带有红方块的窗口短暂出现,然后整个程序退出。当我修复您的缩进时,窗口保持在那里,我可以用箭头键移动红方块:

换句话说,这是您需要的表单:

run = True
while run:
    do_stuff()
pygame.quit()
sys.exit() # Probably not needed since you'll exit anyway.

考虑到窗口消失,这听起来像是从IDE运行它。我总是喜欢从命令行运行它,这样,如果出现异常(或出现重要输出),我可以在程序完成后看到它。

正如您所说,sys.exit是不需要的。但是pygame.quit不在循环范围之内。我尝试了IDE和命令行,没有机会:(@CzmHrptl:根据您发布的代码,退出和退出都不在循环之外。它们的缩进级别将它们清楚地作为每个迭代的最后两个步骤。非常感谢。现在知道了。