禁用pygam中的按钮

2024-09-26 22:53:54 发布

您现在位置:Python中文网/ 问答频道 /正文

import pygame as pg
import sys

pg.init()

buttonGray2 = pg.Color('gray50')
textColour = pg.Color('navy')
buttonFont = pg.font.SysFont("garamond", 25)

screen = pg.display.set_mode((400, 400))
clock = pg.time.Clock()

class Button(pg.sprite.Sprite):
    def __init__(self, text, x, y, width, height, colour, enabled):
        super().__init__()
        self.image = pg.Surface((width, height))
        self.image.fill(colour)
        self.rect = self.image.get_rect()
        txt = buttonFont.render(text, True, textColour)
        txtRect = txt.get_rect(center = self.rect.center)
        self.image.blit(txt, txtRect)
        self.rect.topleft = x, y
        self.enabled = True

    def isPressed(self, event):
        if self.enabled == True:
            if event.type == pg.MOUSEBUTTONDOWN:
                if self.rect.collidepoint(event.pos):
                    return True
        return False

Button1 = Button('Button1', 100, 100, 120, 50, buttonGray2,True)
Button2 = Button('Button2',100,200,120,50,buttonGray2,False)
buttonsGroup = pg.sprite.Group(Button1,Button2)

screen.fill((255,255,255))

while True:
    for event in pg.event.get():
        if event.type == pg.QUIT:
            pg.quit()
            sys.exit()
        elif Button1.isPressed(event):
            print("Button1")
        elif Button2.isPressed(event):
            print("Button2")

    buttonsGroup.draw(screen)

    pg.display.flip()
    clock.tick(60)

以上是我程序中按钮的代码。我试着给它添加一个enabled属性,这样当用户做了一些事情之后,它就会禁用按钮,不允许isPressed方法工作。在

但是,由于某些原因,当我传递false作为按钮的特征时,它仍然有效。所以,我想我在课堂上做错了什么。在

有人能看出我哪里做错了吗?在

提前谢谢!在


Tags: rectimageselfeventtrueifinitenabled

热门问题