首页 > 解决方案 > Pygame 图标和标题不更新。问题是什么?

问题描述

在我的代码中,标题和图标更新不起作用。我有 pygame 1.9.6、python 3.8 和 png 文件是 32.32。我的代码是:

import pygame   
pygame.init()  
screen = pygame.display.set_mode((800, 600)   
pygame.display.set_caption("Space Invader")    
icon = pygame.image.load('ufo.png')    
pygame.display.set_icon(icon)

playerImg = pygame.image.load('player.png')    
playerX = 370    
playerY = 480     
def player():   
    screen.blit(playerImg,(playerX,playerY))

running = True   
while running:
   
colour = (255, 0, 0)    
    screen.fill(colour)    
    for event in pygame.event.get():        
        if event.type == pygame.QUIT:     
            running = False     
    
pygame.display.update()

标签: pythonpygameiconscaption

解决方案


缺少一个)

screen = pygame.display.set_mode((800, 600)

screen = pygame.display.set_mode((800, 600))  

您必须在主应用程序循环中而不是在循环之后更新显示。更正缩进

while running:
    # [...]

    #-->| INDENTATION
    pygame.display.update() 

pygame.display.set_icon()

[...] 某些系统不允许窗口图标在显示后更改。可以在pygame.display.set_mode()设置显示模式之前调用此函数创建图标。

在之前设置图标screen = pygame.display.set_mode((800, 600))

pygame.display.set_caption("Space Invader")    
icon = pygame.image.load('ufo.png')    
pygame.display.set_icon(icon)
screen = pygame.display.set_mode((800, 600))

工作代码:

import pygame   
pygame.init()  

pygame.display.set_caption("Space Invader")    
icon = pygame.image.load('ufo.png')    
pygame.display.set_icon(icon)
screen = pygame.display.set_mode((800, 600))   

playerImg = pygame.image.load('player.png')    
playerX = 370    
playerY = 480     
def player():   
    screen.blit(playerImg,(playerX,playerY))

running = True   
while running:
    for event in pygame.event.get():        
        if event.type == pygame.QUIT:     
            running = False     
    
    colour = (255, 0, 0)    
    screen.fill(colour)    
    player()    
    pygame.display.update()

推荐阅读