[Python] How to make buttons in python/pygame?

Discussão em 'Python' iniciado por Stack, Fevereiro 20, 2025.

  1. Stack

    Stack Membro Participativo

    I'm making a game in pygame and on the first screen I want there to be buttons that you can press to (i) start the game, (ii) load a new screen with instructions, and (iii) exit the program.

    I've found this code online for button making, but I don't really understand it (I'm not that good at object oriented programming). If I could get some explanation as to what it's doing that would be great. Also, when I use it and try to open a file on my computer using the file path, I get the error sh: filepath :permission denied, which I don't know how to solve.

    #load_image is used in most pygame programs for loading images
    def load_image(name, colorkey=None):
    fullname = os.path.join('data', name)
    try:
    image = pygame.image.load(fullname)
    except pygame.error, message:
    print 'Cannot load image:', fullname
    raise SystemExit, message
    image = image.convert()
    if colorkey is not None:
    if colorkey is -1:
    colorkey = image.get_at((0,0))
    image.set_colorkey(colorkey, RLEACCEL)
    return image, image.get_rect()
    class Button(pygame.sprite.Sprite):
    """Class used to create a button, use setCords to set
    position of topleft corner. Method pressed() returns
    a boolean and should be called inside the input loop."""
    def __init__(self):
    pygame.sprite.Sprite.__init__(self)
    self.image, self.rect = load_image('button.png', -1)

    def setCords(self,x,y):
    self.rect.topleft = x,y

    def pressed(self,mouse):
    if mouse[0] > self.rect.topleft[0]:
    if mouse[1] > self.rect.topleft[1]:
    if mouse[0] < self.rect.bottomright[0]:
    if mouse[1] < self.rect.bottomright[1]:
    return True
    else: return False
    else: return False
    else: return False
    else: return False
    def main():
    button = Button() #Button class is created
    button.setCords(200,200) #Button is displayed at 200,200
    while 1:
    for event in pygame.event.get():
    if event.type == MOUSEBUTTONDOWN:
    mouse = pygame.mouse.get_pos()
    if button.pressed(mouse): #Button's pressed method is called
    print ('button hit')
    if __name__ == '__main__': main()


    Thank you to anyone who can help me.

    Continue reading...

Compartilhe esta Página