显示黑屏的Python Pygame新手代码

时间:2012-08-31 23:00:57

标签: python pygame

我执行以下代码,只得到一个空白(黑色)窗口。

窗口标题显示但我还没有加载图像(我尝试使用其他图像而不是使用的图像)。 .py文件和图像位于同一目录中。

background_image_filename='checkmark.jpg'
mouse_image_filename='digestive_bw.png'
import pygame, sys
from pygame.locals import*
from sys import exit


pygame.init()

screen=pygame.display.set_mode((800,800),0,32)
#pygame.display.set_caption("Hello, Howdy, Mate, and Hi there world!")


background=pygame.image.load(background_image_filename).convert()
mouse_cursor=pygame.image.load(mouse_image_filename).convert_alpha()

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

screen.blit(background,(0,0))

x,y=pygame.mouse.get_pos()
x-=mouse_cursor.get_width() /2
y=-mouse_cursor.get_height() /2
screen.blit(mouse_cursor,(x,y))

pygame.display.update()

我已经使用pygame 1.9.2安装了python 3.2。如果我无法解决这个问题,我会考虑卸载它们并安装3.1 + 1.9.1。

4 个答案:

答案 0 :(得分:3)

你应该把代码放在循环中,并使用时钟来避免使用所有的cpu:

clock = pygame.time.Clock()

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

    screen.blit(background,(0,0))

    x,y=pygame.mouse.get_pos()
    x-=mouse_cursor.get_width() /2
    y=-mouse_cursor.get_height() /2
    screen.blit(mouse_cursor,(x,y))

    pygame.display.update()
    clock.tick(30)  # keep 30 fps

答案 1 :(得分:0)

你可能想做的其他事情,你把y = - 放在一个点上,x- =在它旁边。我不认为你打算这样做。

答案 2 :(得分:0)

提示:使用width / 2时,您可以简化Rect。它们还有其他有用的动态属性:http://www.pygame.org/docs/ref/rect.html(宽度,中心,中心x,topleft等等)

代码:

mouse_cursor=pygame.image.load(mouse_image_filename).convert_alpha()
mouse_rect = mouse_cursor.get_rect()

mouse_rect.center = pygame.mouse.get_pos()
screen.blit(mouse_cursor, mouse_rect)
pygame.display.update()

这是:

mouse_cursor=pygame.image.load(mouse_image_filename).convert_alpha()

x,y=pygame.mouse.get_pos()
x-=mouse_cursor.get_width() /2
y=-mouse_cursor.get_height() /2
screen.blit(mouse_cursor,(x,y))
pygame.display.update()

答案 3 :(得分:0)

您是否尝试添加

pygame.display.flip(screen)?

还需要更新

pygame.display.update(screen)