我知道这个标题听起来很像
Detect mouseover an image in Pygame
但有一个错误。我尝试遵循该问题的两个答案,但从未成功。这是我的代码的一部分:
title = font3.render(('SQUASH!'), True, white)
play = font1.render(('PLAY'), True, white)
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
screen.blit((title), (400, 400))
screen.blit(play, (theposition))
if play.collide_point(pygame.mouse.get_pos()):
hi = font1.render(('hi'), True, white)
screen.blit(hi, (300, 300))
pygame.display.flip()
time.sleep(0.000000000000000000000000000000000000000000000000000000001)
pygame.display.flip()
“ hi”基本上是使用第一个答案的测试。如果我将鼠标悬停在按钮上,则尝试更改文本(粗体,下划线等)。它似乎不起作用。
最佳答案
这是一些示例代码:
import pygame
from pygame.locals import *
import time
if __name__ == "__main__":
pygame.init()
size = (700, 700)
screen = pygame.display.set_mode(size)
font = pygame.font.SysFont('Impact',20,16)
title = font.render(('SQUASH!'), True, (255,255,255))
play = font.render(('PLAY'), True, (255,255,255))
play_r = play.get_rect()
play_r.x, play_r.y = 300,300
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
screen.fill((0,255,0,))
screen.blit(title, (400, 400))
screen.blit(play, (300,300))
if play_r.collidepoint(pygame.mouse.get_pos()):
print 'Detected'
time.sleep(0.000000000000000000000000000000000000000000000000000000001)
pygame.display.flip()
您必须创建一个get来告诉您确切的位置,知道使用
collidepoint()
的文本。现在,当您将鼠标悬停在文本上时,它将打印到控制台。