我执行以下代码,只得到一个空白(黑色)窗口。
窗口标题显示但我还没有加载图像(我尝试使用其他图像而不是使用的图像)。 .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。
答案 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)