#!/usr/bin/env python import os, sys, pygame 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)) self.down_image = pygame.image.load('button-down.png').convert_alpha() self.down_image = pygame.transform.smoothscale(self.down_image, (size, size)) self.rect = self.up_image.get_rect() self.rect.topleft = topleft self.pressed = False def draw_on(self, screen): if self.pressed: screen.blit(self.down_image, self.rect) else: screen.blit(self.up_image, self.rect) def is_pressed(self, pos): return self.rect.collidepoint(pos) def press(self): self.pressed = True self.run() def unpress(self): self.pressed = False def run(self): print('click') class IncButton(Button): def run(self): Photoboite.i += 1 class DecButton(Button): def run(self): Photoboite.i -= 1 class Photoboite: i = 0 def __init__(self): self.screen = self.screen() pygame.font.init() self.background = 255, 255, 255 self.buttons = [] 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) def screen(self): if os.getenv('DISPLAY'): pygame.display.init() return pygame.display.set_mode((1280, 768)) else: drivers = ['directfb', 'fbcon', 'svgalib'] found = False for driver in drivers: if not os.getenv('SDL_VIDEODRIVER'): os.putenv('SDL_VIDEODRIVER', driver) try: pygame.display.init() except pygame.error as e: print('Driver: {0} failed.'.format(driver)) continue found = True break if not found: raise Exception('No suitable video driver found!') return pygame.display.set_mode() 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()