2017-07-30 11 views
1

使用变量来打印一些东西应该在python中工作。为什么当我运行我的代码时不起作用?变量名称是bliting。如果这个问题可以解决,我该怎么办?谢谢。为什么这不能工作? - 使用.blit通过一个变量

下面是代码:

import pygame 

pygame.init() 
window = pygame.display.set_mode((800,600)) 
image = pygame.image.load("o1.png") 
bliting = window.blit(image, (0,0)) 
gameLoop = True 
while gameLoop: 
    for event in pygame.event.get(): 
     if (event.type == pygame.QUIT): 
      gameLoop = False 

#why does typing in the variable name "bliting" not blit my image? 
    bliting 

    window.fill((255,255,255)) 
    pygame.display.flip() 
pygame.quit() 
+0

你有什么期望时,你引用变量没有做它的任何操作的情况发生?你是否在寻找它调用'window.blit(image,(0,0))' - 如果是的话,你需要将它包装在'lambda'中并调用它,例如'bliting = lambda:window.blit(image,(0,0))',然后在你的循环中调用它:'bliting()' – AChampion

+0

是的,那正是我想要做的。谢谢。 – Brandon

回答

2

确实如此,问题是你只块传输的图像一次,然后屏幕正在不断填充白色。试试下面的代码。

import pygame 

pygame.init() 
window = pygame.display.set_mode((800,600)) 
image = pygame.image.load("o1.png") 
bliting = window.blit(image, (0,0)) 
gameLoop = True 
while gameLoop: 
    for event in pygame.event.get(): 
     if (event.type == pygame.QUIT): 
      gameLoop = False 

    bliting 

    pygame.display.flip() 
pygame.quit() 

请注意,我所做的只是删除屏幕填充。虽然这个“有效”,但更好的选择是创建一个函数,将图像与图像混合并在循环中调用它。另外,为了将来的参考,请确保你的screen.fill()之后的blitting图像,而不是之前。虽然在这种情况下并不重要,但人们经常跳过这个简单的错误。

随意让我知道如果您有任何类似的问题:)