From 73393de3a842fd0e66984a21fab37da663b713e5 Mon Sep 17 00:00:00 2001 From: Guillaume Dott Date: Wed, 27 Sep 2017 00:04:44 +0200 Subject: [PATCH] Create Button class --- photoboite.py | 128 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 84 insertions(+), 44 deletions(-) diff --git a/photoboite.py b/photoboite.py index 578b475..d1a5d29 100755 --- a/photoboite.py +++ b/photoboite.py @@ -1,61 +1,101 @@ #!/usr/bin/env python import sys, pygame -pygame.init() -infos = pygame.display.Info() -# size = infos.current_w, infos.current_h -size = 1280, 768 -background = 255, 255, 255 +class Button: + def __init__(self, size, topleft): + self.up_image = pygame.image.load('button-up.png').convert_alpha() + self.up_image = pygame.transform.smoothscale(self.up_image, (size, size)) -screen = pygame.display.set_mode(size) + self.down_image = pygame.image.load('button-down.png').convert_alpha() + self.down_image = pygame.transform.smoothscale(self.down_image, (size, size)) -screen.fill(background) + self.rect = self.up_image.get_rect() + self.rect.topleft = topleft -button_size = int(screen.get_width() / 4) + self.pressed = False -button_up = pygame.image.load('button-up.png').convert_alpha() -button_up = pygame.transform.smoothscale(button_up, (button_size, button_size)) -button_down = pygame.image.load('button-down.png').convert_alpha() -button_down = pygame.transform.smoothscale(button_down, (button_size, button_size)) -button_up_rect = button_up.get_rect() -button_up_rect.topleft = screen.get_width() - button_size - 20, screen.get_height() / 2 - button_size / 2 + def draw_on(self, screen): + if self.pressed: + screen.blit(self.down_image, self.rect) + else: + screen.blit(self.up_image, self.rect) -button2 = pygame.Rect(screen.get_width() - 70, 100, 50, 50) + def is_pressed(self, pos): + return self.rect.collidepoint(pos) -camera = pygame.Rect(20, 20, screen.get_width() - screen.get_width() / 4 - 60, screen.get_height() - 40) + def press(self): + self.pressed = True + self.run() -font = pygame.font.Font(None, 80) + def unpress(self): + self.pressed = False -i = 0 -pressed = False -while True: - for event in pygame.event.get(): - if event.type == pygame.QUIT or event.type == pygame.KEYDOWN and event.unicode == 'q': - sys.exit() - elif event.type == pygame.MOUSEBUTTONDOWN: - if button_up_rect.collidepoint(event.pos): - pressed = True - elif event.type == pygame.MOUSEBUTTONUP: - if button_up_rect.collidepoint(event.pos): - pressed = False - i += 1 - if button2.collidepoint(event.pos): - i -= 1 + def run(self): + print('click') - screen.fill(background) +class IncButton(Button): + def run(self): + Photoboite.i += 1 - screen.fill((0,0,0), rect=button2) - screen.fill((0,0,0), rect=camera) +class DecButton(Button): + def run(self): + Photoboite.i -= 1 - text = str(i) - size = font.size(text) - ren = font.render(text, 0, (255, 255, 0)) - screen.blit(ren, (40, 40)) +class Photoboite: + i = 0 + + def __init__(self): + pygame.init() + + self.size = 820, 540 + infos = pygame.display.Info() + # self.size = infos.current_w, infos.current_h + self.size = 1280, 768 + self.background = 255, 255, 255 + self.buttons = [] + + self.screen = pygame.display.set_mode(self.size) + + button_size = int(self.screen.get_width() / 4) + topleft = self.screen.get_width() - button_size - 20, self.screen.get_height() / 4 - button_size / 2 + + self.buttons.append(IncButton(button_size, topleft)) + self.buttons.append(DecButton(50, (70, 400))) + + self.camera = pygame.Rect(20, 20, self.screen.get_width() - self.screen.get_width() / 4 - 60, self.screen.get_height() - 40) + + self.font = pygame.font.Font(None, 80) - if pressed: - screen.blit(button_down, button_up_rect) - else: - screen.blit(button_up, button_up_rect) - pygame.display.flip() + def run(self): + pressed = False + while True: + for event in pygame.event.get(): + if event.type == pygame.QUIT or event.type == pygame.KEYDOWN and event.unicode == 'q': + sys.exit() + elif event.type == pygame.MOUSEBUTTONDOWN: + for button in self.buttons: + if button.is_pressed(event.pos): + button.press() + elif event.type == pygame.MOUSEBUTTONUP: + for button in self.buttons: + if button.is_pressed(event.pos): + button.unpress() + + self.screen.fill(self.background) + + self.screen.fill((0,0,0), rect=self.camera) + + text = str(Photoboite.i) + size = self.font.size(text) + ren = self.font.render(text, 0, (255, 255, 0)) + self.screen.blit(ren, (40, 40)) + + + for button in self.buttons: + button.draw_on(self.screen) + pygame.display.flip() + +photoboite = Photoboite() +photoboite.run()