如何解决为什么 pygame 按钮不起作用?
我一直在学习 Sentdex 的教程来创建按钮并使其起作用。我试着按照我的要求改变它。当我单击按钮时,我希望执行该功能(另一个屏幕)。我在功能(另一个屏幕)中放置了一个按钮,在那里我可以返回主页面。但是当我点击按钮时,只有当我点击鼠标时它才会转到另一个功能,并且输出显示直到我点击鼠标。它不会转到另一个屏幕并一直停留在初始屏幕。
import pygame
window = pygame.display.set_mode((1500,800),pygame.RESIZABLE)
def text_objects(text,font):
textSurface = font.render(text,True,(0,0))
return textSurface,textSurface.get_rect()
def button(msg,x,y,w,h,ic,ac,action):
mouse = pygame.mouse.get_pos()
click = pygame.mouse.get_pressed()
if x+w > mouse[0] > x and y+h > mouse[1] > y:
pygame.draw.rect(window,(x,h))
if click[0] == 1:
action()
else:
pygame.draw.rect(window,h))
smallText = pygame.font.SysFont(None,20)
textSurf,textRect = text_objects(msg,smallText)
textRect.center = ((x+(w/2)),(y+(h/2)))
window.blit(textSurf,textRect)
def home_intro():
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
window.blit(image,0))
pygame.display.set_caption("PROGRAM")
button("Start",150,450,100,50,200,0),(255,255,210),start)
button("Stop",550,stop)
pygame.display.flip()
home_intro()
pygame.quit()
quit()
我已经按照教程进行了所有操作。但我不明白为什么它不起作用。我该如何解决这个问题?
解决方法
您必须添加一个变量来存储游戏的当前状态 (game_state
)。单击按钮时更改变量并根据变量的状态绘制不同的场景:
game_state = "stop"
def start():
global game_state
game_state = "start"
def stop():
global game_state
game_state = "stop"
def home_intro():
global game_state
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
window.blit(image,(0,0))
button("Start",150,450,100,50,200,0),(255,255,210),start)
button("Stop",550,stop)
if game_state == "start":
# [...]
else:
# [...]
pygame.display.flip()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。