<p>一般来说,你说的是使用一个按钮来执行一些事情。为此,我们需要知道玩家用鼠标点击的位置,测试它是否在描绘图像的区域(我们的“按钮”)内,如果是,执行一个函数。下面是一个小例子:</p>
<pre><code> # get the mouse clicks
mouse = pygame.mouse.get_pos() # position
click = pygame.mouse.get_pressed() # left/right click
if img.x + img.width > mouse[0] > img.x and img.y + img.height > mouse[1] > img.y: # Mouse coordinates checking.
if click[0] == 1: # Left click
my_function_on_click()
</code></pre>
<p>它要求图像对象具有<code>x</code>和<code>y</code>坐标以及定义的<code>height</code>和<code>width</code>。如果您的图像对象有一个与您可以调用该rect的大小相同的rect,或者如另一个答案所指出的那样,使用<code>collidepoint</code>函数,则会容易得多</p>
<p>使用复制到注释中的代码的最小示例:</p>
<pre><code>width = 48
height = 48
x = 100
y = 100
exe = pygame.image.load('exe.jpg')
Sexe = pygame.transform.scale(exe,(width,height))
while not done:
screen.blit(Sexe,[x,y]) # blit image
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
mouse = pygame.mouse.get_pos()
position click = pygame.mouse.get_pressed() # left/right click
# Mouse coordinates checking:
sexe_rect = Sexe.get_rect()
if sexe_rect.x + sexe_rect.width > mouse[0] > sexe_rect.x and sexe_rect.y + sexe_rect.height > mouse[1] > sexe_rect.y:
# if Sexe.get_rect().collidepoint(mousePos): # Alternative, A LOT shorter and more understandable
if click[0] == 1: # Left click
print("I GOT CLICKED!")
</code></pre>