Python Pygame运行不正确

Python Pygame运行不正确,python,pygame,Python,Pygame,我不能使用pygame运行任何东西,因为每当我运行任何东西时,即使是一个显示圆圈的非常简单的程序,该程序也会产生一个不做任何事情的黑屏 我说的黑屏是这样的 这到底是什么?有没有办法解决这个问题 编辑: 我忘了提到这个程序似乎运行得很好,我没有收到任何错误 编辑#2:这是我非常简单的程序: import pygame pygame.init() screen = pygame.display.set_mode([500, 500]) running = True while running:

我不能使用pygame运行任何东西,因为每当我运行任何东西时,即使是一个显示圆圈的非常简单的程序,该程序也会产生一个不做任何事情的黑屏

我说的黑屏是这样的

这到底是什么?有没有办法解决这个问题

编辑: 我忘了提到这个程序似乎运行得很好,我没有收到任何错误

编辑#2:这是我非常简单的程序:

import pygame
pygame.init()

screen = pygame.display.set_mode([500, 500])

running = True
while running:

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

screen.fill((255, 255, 255))

SCREEN_TITLE = 'Chess Game'
pygame.display.set_caption(SCREEN_TITLE)

pygame.draw.circle(screen, (0, 0, 255), (250, 250), 75)

pygame.display.flip()

pygame.quit()
编辑#3:python控制台上显示的图片


您可能会遇到两个不同的问题:

问题1:MacOS上的Pygame安装 在使用MacOS运行PyGame时,存在一些记录在案的问题。请检查您是否已在计算机中正确安装和设置pygame。可能有用

问题2:代码不正确 除此之外,您的代码还有几个问题。您正在运行的循环不会显示任何内容,因为它在处理事件时卡住了,仅此而已。因此,您会看到一个黑屏。请注意,在执行结束时,您正在打印屏幕和圆圈

使用
pygame
时,我建议区分:

  • 初始化:设置
    pygame
    屏幕
    。呈现任何静态内容
  • 运行循环:处理事件并呈现任何动态内容
  • 结束:显示任何结束动画/对象并最终确定
    pygame
我建议作出以下修改:

  • 首先渲染屏幕
  • 在运行循环中,只需处理事件并渲染圆
  • 我添加了调试消息。您可以通过运行
    python mygame.py
    python-O mygame.py
    来启用和禁用它们。请注意,运行循环中的
    print
    语句将打印大量消息
代码如下:

#!/usr/bin/python

# -*- coding: utf-8 -*-

# For better print formatting
from __future__ import print_function

# Imports
import pygame


#
# MAIN FUNCTION
#
def main():
    # Setup display and static content
    if __debug__:
        print("Initialising pygame")
    pygame.init()
    SCREEN_TITLE = 'Chess Game'
    pygame.display.set_caption(SCREEN_TITLE)
    screen = pygame.display.set_mode([500, 500])
    screen.fill((255, 255, 255))
    pygame.display.flip()    

    # Running loop
    running = True
    while running:
        if __debug__:
            print("New iteration")
        # Process events
        if __debug__:
            print("- Processing events...")
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False

        # Display any dynamic content
        if __debug__:
            print("- Rendering dynamic content...")
        pygame.draw.circle(screen, (0, 0, 255), (250, 250), 75)

        # Update display
        if __debug__:
            print("- Updating display...")
        pygame.display.flip()

    # End
    if __debug__:
        print("End")
    pygame.quit()


#
# ENTRY POINT
#
if __name__ == "__main__":
    main()
调试输出:

$ python mygame.py 
pygame 1.9.6
Hello from the pygame community. https://www.pygame.org/contribute.html
Initialising pygame
New iteration
- Processing events...
- Rendering dynamic content...
- Updating display...
.
.
.
New iteration
- Processing events...
- Rendering dynamic content...
- Updating display...
End
显示:


您的代码在哪里?哦,很抱歉,我会发布它now@Mr.Polywhirl我已经发布了程序的代码,您必须调用pygame.display.flip()或pygame.display.update(),我正在调用pygame.display.flip()在最底层,在last@SergeAlkhalil如果这不是为您运行的,请说明您的错误,因为它在我的机器上运行。除了代码之外,可能还有一些配置问题。这是我没有收到任何错误的问题。我将发布一张我收到的图片。@SergeAlkhalil尝试执行我更新的答案,并检查调试消息是否显示在控制台中。如果是,则说明安装不正确。如果没有,则执行时出错。当我运行调试代码时,我得到了一个新的迭代,但它没有结束。它一直在添加新的迭代。这应该发生吗?@SergeAlkhalil是的,新的迭代应该打印出来,直到执行结束。我知道这并不舒服,但它会检查您正在运行的迭代是否正在被评估。