如何点击 pygame window 中的特定位置?

How can I click on specific positions in a pygame window?

例如我有一个宽度为 100 (int) 的正方形。我想在点击其中时打印一些内容。

import pygame
pygame.init()

window = pygame.display.set_mode((200, 300))
button = pygame.image.load("button.png")
window.blit(button, (50, 50))
pygame.display.flip()

run = True
while run:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

        if event.type == pygame.MOUSEBUTTONDOWN:
            pos = pygame.mouse.get_pos()
            if (50, 50) <= pos <= (150, 150):
               print("text...")

    pygame.display.update()

每当我在受限的 x 轴之间单击时,它确实会打印一些内容,但是如果我单击该 x 轴之间的任何 y 坐标,它也会显示输入,例如,如果我单击 (100, 100),它会工作很好,但它也可以通过单击 (100, 200) 来工作,即使我不希望它这样做。我不知道我的问题是否与任何元组有关,但根据我的理解,它只读取 x 轴限制,这就是问题所在。

如果您使用 pygame,您可以将矩形创建为

rect = pygame.Rect(x, y, w, h)

然后,当您按下鼠标时,使用以下方法检查它是否发生碰撞:

if rect.collidepoint(mouse_x, mouse_y):
    print("text...")

rect.collidepoint returns 如果点在矩形内则为真

更改此部分:

        if event.type == pygame.MOUSEBUTTONDOWN:
            pos = pygame.mouse.get_pos()
            if (50, 50) <= pos <= (150, 150):
               print("text...")

收件人:

        if event.type == pygame.MOUSEBUTTONDOWN:
            pos = pygame.mouse.get_pos()
            if 50 <= pos[0] <= 150 and 50 <= pos[1] <= 150:
               print("text...")

或者你也可以改成:

        if event.type == pygame.MOUSEBUTTONDOWN:
            pos = pygame.mouse.get_pos()
            if all(50<=c<=150 for c in pos):
               print("text...")