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