You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pygame开发:程序运行后屏幕无显示问题求助

Pygame程序无内容显示的解决方法

你的代码存在几个容易忽略的问题,以下是具体分析和修复方案:

问题点

  • 缺少屏幕更新步骤:Pygame的绘制操作都是在内存缓冲区完成的,必须调用pygame.display.flip()或pygame.display.update()才能将缓冲区内容渲染到屏幕上。你的主循环里只执行了填充和blit操作,没有更新显示,导致屏幕始终为空。
  • 事件处理的变量作用域错误:Quit()函数里的running = False修改的是函数内部的局部变量,无法改变全局的running变量,点击关闭按钮也无法退出循环。
  • 图片重复加载浪费资源:每次调用Images()函数都重新加载图片,会造成不必要的性能消耗,应该将图片加载逻辑移到函数外部。

修复后的代码

#----- To-Do -----#
#      Init       #
 
import pygame
import time
import random

pygame.init()
from pygame.locals import*

RESOLUTION = (192, 108)
pygame.display.set_caption('Cake Clicker')
window = pygame.display.set_mode(RESOLUTION, pygame.SCALED)

# 提前加载图片,避免重复加载
backgrounds = []
backgrounds.append(pygame.image.load('ClickerBackground.png'))

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

def draw_background(back_index):
    window.fill((255,255,0))
    # 修正图片居中逻辑:让图片中心与屏幕中心对齐
    bg_img = backgrounds[back_index]
    window.blit(bg_img, (RESOLUTION[0]/2 - bg_img.get_width()/2, RESOLUTION[1]/2 - bg_img.get_height()/2))

running = True
background = 0
while running:
    running = handle_events(running)
    draw_background(0)
    # 更新屏幕显示,这是显示内容的关键步骤
    pygame.display.flip()

pygame.quit()

额外说明:原代码中图片的blit坐标(192/2, 108/2)会让图片左上角位于屏幕中心,可能导致图片超出屏幕范围。修复后的代码减去了图片自身尺寸的一半,确保图片真正居中显示。

内容的提问来源于stack exchange,提问作者VQ350GeTsome

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 11:45:36