2011-11-17 90 views
1

我刚刚学习使用python 3.2和pygame 1.8的GUI编程。从我的理解,下面的代码应该显示一个白色的背景。然而,我得到的只是一个黑屏。另外,如果出现以下情况,我在Windows 7中使用IDLE:Pygame背景不blitting

import pygame 
pygame.init() 
screen = pygame.display.set_mode((640, 480)) 
background = pygame.Surface(screen.get_size()) 
background.fill((255, 255, 255)) 
screen.blit(background, (0, 0)) 

回答

3

您必须有一个主循环来更新屏幕。此代码应该工作:

import pygame 

pygame.init() 
screen = pygame.display.set_mode((640, 480)) 

background = pygame.Surface(screen.get_size()) 
background.fill((255, 255, 255)) 

while True: 
    screen.blit(background, (0, 0)) 
    pygame.display.update() 
+1

现在我得到这个错误:行 11 screen.update() AttributeError的:“pygame.Surface”对象有没有属性“更新” – ahmedalishaikh

+0

如何作出这样的成代码格式BTW? – ahmedalishaikh

+0

@Ahmed - 我假设你的意思是在评论中,在“添加评论”按钮下面有一个帮助链接,它解释了[评论格式](http://meta.stackexchange.com/questions/24793/how-to - 使用格式化功能于评论/ 24794#24794)。对于“代码格式化”,将代码放在'\'反引号\''内。 –

2

忘记更新屏幕。

import pygame 
pygame.init() 
screen = pygame.display.set_mode((640, 480)) 
background = pygame.Surface(screen.get_size()) 
background.fill((255, 255, 255)) 
screen.blit(background, (0, 0)) 

pygame.display.update() 

while True: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      sys.exit() 
+0

这应该是正确的答案 –

1

您不会将背景中的填充部分放在循环中。你也忘了pygame.display.update()