pythonPygame-交互式按钮没有响应

pythonPygame-交互式按钮没有响应,python,button,pygame,Python,Button,Pygame,我只是想澄清一下,我还是python的新手,我正在尝试制作两个按钮,由于鼠标的交互作用而改变颜色。我使用的是一个教程(),它使用鼠标坐标触发一个新的pygame rect,以不同的颜色显示在当前的pygame rect之上。我遇到一个问题,当我将鼠标悬停在按钮上时,它不会改变颜色。我知道这不是我用红色和绿色测试过的当前颜色类型。感谢您的帮助和意见:) 您必须在介绍时在内完成所有操作 此外,您可以使用pygame.Rect()和collidepoint(鼠标)检查鼠标悬停 import pygam

我只是想澄清一下,我还是python的新手,我正在尝试制作两个按钮,由于鼠标的交互作用而改变颜色。我使用的是一个教程(),它使用鼠标坐标触发一个新的pygame rect,以不同的颜色显示在当前的pygame rect之上。我遇到一个问题,当我将鼠标悬停在按钮上时,它不会改变颜色。我知道这不是我用红色和绿色测试过的当前颜色类型。感谢您的帮助和意见:)


您必须在介绍时在
内完成所有操作

此外,您可以使用
pygame.Rect()
collidepoint(鼠标)
检查鼠标悬停

import pygame


# --- constants ---- UPPERCASE

SIZE = WIDTH, HEIGHT = 720, 480
SPEED = [2, 2]

# Colours

BLACK = (0,0,0)
BLUE = (0,0,255)
GREEN = (0,200,0)
RED = (200,0,0)
GREEN_BRIGHT = (0,255,0)
RED_BRIGHT = (255,0,0)

# --- functions ---

def text_objects(text, font):
    text_surface = font.render(text, True, BLACK)
    return text_surface, text_surface.get_rect()

def game_intro():

    large_text = pygame.font.Font('freesansbold.ttf', 115)
    text_surf, text_rect = text_objects("Broom!", large_text)

    # center using screen
    text_rect.center = screen.get_rect().center

    button_green_rect = pygame.Rect(75,400,100,50)
    button_red_rect = pygame.Rect(550,400,100,50)

    intro = True

    while intro:

        # --- events ---

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

        mouse = pygame.mouse.get_pos()

        # --- draws ----

        screen.fill(BLUE)

        screen.blit(text_surf, text_rect)

        #Button

        if button_green_rect.collidepoint(mouse):
              pygame.draw.rect(screen, GREEN_BRIGHT, button_green_rect)
        else:
              pygame.draw.rect(screen, GREEN, button_green_rect)

        if button_red_rect.collidepoint(mouse):
              pygame.draw.rect(screen, RED_BRIGHT, button_red_rect)
        else:
              pygame.draw.rect(screen, RED, button_red_rect)

        pygame.display.flip()

        clock.tick(15)

# --- main ---

pygame.init()

screen = pygame.display.set_mode(SIZE)

pygame.display.set_caption("BETA::00.0.1")

clock = pygame.time.Clock()

game_intro()

pygame.quit()

在介绍时,您必须检查
内的鼠标位置(并重新绘制rect)
import pygame


# --- constants ---- UPPERCASE

SIZE = WIDTH, HEIGHT = 720, 480
SPEED = [2, 2]

# Colours

BLACK = (0,0,0)
BLUE = (0,0,255)
GREEN = (0,200,0)
RED = (200,0,0)
GREEN_BRIGHT = (0,255,0)
RED_BRIGHT = (255,0,0)

# --- functions ---

def text_objects(text, font):
    text_surface = font.render(text, True, BLACK)
    return text_surface, text_surface.get_rect()

def game_intro():

    large_text = pygame.font.Font('freesansbold.ttf', 115)
    text_surf, text_rect = text_objects("Broom!", large_text)

    # center using screen
    text_rect.center = screen.get_rect().center

    button_green_rect = pygame.Rect(75,400,100,50)
    button_red_rect = pygame.Rect(550,400,100,50)

    intro = True

    while intro:

        # --- events ---

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

        mouse = pygame.mouse.get_pos()

        # --- draws ----

        screen.fill(BLUE)

        screen.blit(text_surf, text_rect)

        #Button

        if button_green_rect.collidepoint(mouse):
              pygame.draw.rect(screen, GREEN_BRIGHT, button_green_rect)
        else:
              pygame.draw.rect(screen, GREEN, button_green_rect)

        if button_red_rect.collidepoint(mouse):
              pygame.draw.rect(screen, RED_BRIGHT, button_red_rect)
        else:
              pygame.draw.rect(screen, RED, button_red_rect)

        pygame.display.flip()

        clock.tick(15)

# --- main ---

pygame.init()

screen = pygame.display.set_mode(SIZE)

pygame.display.set_caption("BETA::00.0.1")

clock = pygame.time.Clock()

game_intro()

pygame.quit()