Aide creer une interface pour mon code python

Bonjour,

bonjour,
voila je me présente kévin 31 ans de chalons en champagne, je vais bientôt me marier et je voudrais construire un photobooth avec un raspberri pi 2;
J’ai cherché sur pas mal de site j’ai trouve un programme fonctionnel mais je voudrais le modifier pour le rendre plus joli et c’est la que j’ai besoin d’aide.
le programme fonctionne:
ecran noir
j’appuie sur mon bouton connecté sur le gpio
j’ai un décompte 3;2;1
message souriez
il prend une photo l 'affiche et inscrit « et voila »
je peu reprendre une photo en pressant de nouveau le bouton
si je reste appuye sur le bouton je sors du programme
en fait ce que je voudrais c’est l’embellir en mettant une image de fond a la place de mon ecran noir du debut, une image sympa que je ferais sous photoshop avec en plus ecrit " appuyé sur le bouton pour prendre une photo"
pareil pour le décompte avec une image de fond pour que je puisse avoir quelque chose de plus joli que mes 3;2;1 en blanc disgracieux…
pour l’affichage de la photo pareil je voudrais faire un truc sous photoshop type photomaton avec ma photo qui s’affiche dedans (un cadre en gros)
et je voudrais qu il rebascule sur le premier ecran ensuite : appuye sur un bouton pour prendre une photo.
Voila je ne connais pas le python donc je suis un peu bloqué.
Si une âme charitable peux me filer un coup de main.
Merci d’avance;

code :

#!/usr/bin/env python2.7

– coding: utf-8 -
import RPi.GPIO as GPIO
import time
from datetime import datetime
from PIL import Image
import pygame
from pygame.locals import *
import os

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)

pygame.init()
screen = pygame.display.set_mode((0,0),pygame.FULLSCREEN)
width, height = screen.get_size()

def takepic(imageName): #prend une photo (note: il faut selectionner la ligne qui correspond à votre installation en enlevant le premier # )

command = « sudo raspistill -t 1000 -w 960 -h 720 -o « + imageName + » -q 80 » #prend une photo

command = « sudo raspistill -t 1000 -w 960 -h 720 -o « + imageName + » -rot 90 -q 80 » #prend une photo et la tourne de 90°

command = « sudo raspistill -t 1000 -w 960 -h 720 -o « + imageName + » -rot 180 -q 80 » #prend une photo et la tourne de 180°

command = « sudo raspistill -t 1000 -w 960 -h 720 -o « + imageName + » -rot 270 -q 80 » #prend une photo et la tourne de 270°

os.system(command)

def loadpic(imageName): # affiche imagename
print("loading image: " + imageName)
background = pygame.image.load(imageName);
background.convert_alpha()
background = pygame.transform.scale(background,(width,height))
screen.blit(background,(0,0),(0,0,width,height))
pygame.display.flip()

def minuterie():
writemessage(" 3")
time.sleep(1)
writemessage(" 2")
time.sleep(1)
writemessage(" 1")
time.sleep(1)
writemessage(« souriez »)

def writemessage(message): # pour pouvoir afficher des messages sur un font noir
screen.fill(pygame.Color(0,0,0))
font = pygame.font.SysFont(« verdana », 250, bold=1)
textsurface = font.render(message, 1, pygame.Color(255,255,255))
screen.blit(textsurface,(35,40))
pygame.display.update()

def writemessagetransparent(message): # pour pouvoir afficher des messages en conservant le font
font = pygame.font.SysFont(« verdana », 50, bold=1)
textsurface = font.render(message, 1, pygame.Color(255,255,255))
screen.blit(textsurface,(35,40))
pygame.display.update()

if (os.path.isdir("/home/pi/Desktop/photos") == False): # si le dossier pour stocker les photos n’existe pas
os.mkdir("/home/pi/Desktop/photos") # alors on crée le dossier (sur le bureau)
os.chmod("/home/pi/Desktop/photos",0o777) # et on change les droits pour pouvoir effacer des photos

while True : #boucle jusqu’a interruption
try:
print « \n attente boucle »

#on attend que le bouton soit pressé
GPIO.wait_for_edge(18, GPIO.FALLING)
# on a appuyé sur le bouton...


#on lance le decompte
minuterie()


#on genere le nom de la photo avec heure_min_sec
date_today = datetime.now()
nom_image = date_today.strftime('%d_%m_%H_%M_%S')


#on prend la photo
chemin_photo = '/home/pi/Desktop/photos/'+nom_image+'.jpeg'
takepic(chemin_photo) #on prend la photo 

#on affiche la photo
loadpic(chemin_photo)

#on affiche un message
writemessagetransparent("et voila...")

if (GPIO.input(18) == 0): #si le bouton est encore enfoncé (sont etat sera 0)
      print("bouton  appuye, je dois sortir")
      break # alors on sort du while

except KeyboardInterrupt:
print ‹ sortie du programme! ›
raise

GPIO.cleanup() # reinitialisation GPIO lors d’une sortie normale

Bonjour, (si cela peut vous être utile)

La boucle while est une boucle inifinie du moment qu’elle est VRAIE (True ou 1) ou que le programme ne recoit pas un SIGNAL, les écoutes du ‹ push button › se font dans cette boucle (à l’infinie donc) puis au signal d’interruption (CTRL+C) on sort de la boucle, ou ci-dessus à l’aide d’un break au moment voulu et dans le code ci-dessus on sort qu programme juste après (plus d’instruction à part un nettoyage GPIO)… mais avant cela (avant while …) , vous pouvez simplement utiliser la fonction :

loadpic(chemin_photo)

chemin_photo
sera le chemin complet de votre photo créée avec photoshop et enregistrée sur la raspberry (mais aussi accessible via d’autres protocoles si besoin mais je ne pense pas que cela soit l’objectif ici)

Quel type d’écran utilisez vous ?

bonjour,

je me suis mal exprime je pense.
Il m’affiche bien la photo a la fin et attend pour une nouvelle prise.
En fait je veux juste embellir le programme avec des images plus sympa.
Les photos seront plus parlantes :
Quand j’appuie sur mon bouton j’ai un décompte à partir de 3:
blanc sur fond noir je voudrais faire un truc plus jolie;

Apres j’ai le message : souriez pareil je voudrais faire un truc plus sympa

et enfin il m’affiche la photo et attend que je presse le bouton pour recommencer.

je voudrais un ecran de départ plus comme ca :

merci

ps : en ecran je mettrais un petit 10 pouces une fois le caisson construis.

Non j’avais bien compris , mais il y a plusieurs façons de faire…

Une manière de le faire peut-être (sans programmér le cadre, background ou autre, mais en utilisant des images préfaites chargées avec la fonction existante qui sert a afficher la photo)

   #!/usr/bin/env python 

-- coding: utf-8 -
import RPi.GPIO as GPIO
import time
from datetime import datetime
from PIL import Image
import pygame
from pygame.locals import *
import os

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)

PHOTOS                      = "/home/pi/Desktop/photos"
APP_RESSOURCES              = "/home/pi/Desktop/ressources"
imageName_accueil           = "%s/accueil.jpg"   %APP_RESSOURCES
imageName_compteur_3        = "%s/compteur3.jpg" % APP_RESSOURCES
imageName_compteur_2        = "%s/compteur2.jpg" % APP_RESSOURCES
imageName_compteur_1        = "%s/compteur1jpg" % APP_RESSOURCES
imageName_sourriez          = "%s/sourriez.jpg" % APP_RESSOURCES

pygame.init()
screen = pygame.display.set_mode((0,0),pygame.FULLSCREEN)
width, height = screen.get_size()

def takepic(imageName): #prend une photo (note: il faut selectionner la ligne qui correspond à votre installation en enlevant le premier # )
	command = "sudo raspistill -t 1000 -w 960 -h 720 -o "+ imageName +" -q 80" #prend une photo
	command = "sudo raspistill -t 1000 -w 960 -h 720 -o "+ imageName +" -rot 90 -q 80" #prend une photo et la tourne de 90°

	command = "sudo raspistill -t 1000 -w 960 -h 720 -o "+ imageName +" -rot 180 -q 80" #prend une photo et la tourne de 180°
	command = "sudo raspistill -t 1000 -w 960 -h 720 -o "+ imageName +" -rot 270 -q 80" #prend une photo et la tourne de 270°

	os.system(command)

def loadpic(imageName): # affiche imagename
	print("loading image: " + imageName)
	background = pygame.image.load(imageName);
	background.convert_alpha()
	background = pygame.transform.scale(background,(width,height))
	screen.blit(background,(0,0),(0,0,width,height))
	pygame.display.flip()

def minuterie():
	#writemessage(" 3")
        loadpic(imageName_compteur_3)
	time.sleep(1)
	#writemessage(" 2")
        loadpic(imageName_compteur_2)
	time.sleep(1)
	#writemessage(" 1")
        loadpic(imageName_compteur_1)
	time.sleep(1)
        loadpic(imageName_compteur_sourriez)
	#writemessage("souriez")

def writemessage(message): # pour pouvoir afficher des messages sur un font noir
	screen.fill(pygame.Color(0,0,0))
	font = pygame.font.SysFont("verdana", 250, bold=1)
	textsurface = font.render(message, 1, pygame.Color(255,255,255))
	screen.blit(textsurface,(35,40))
	pygame.display.update()

def writemessagetransparent(message): # pour pouvoir afficher des messages en conservant le font
	font = pygame.font.SysFont("verdana", 50, bold=1)
	textsurface = font.render(message, 1, pygame.Color(255,255,255))
	screen.blit(textsurface,(35,40))
	pygame.display.update()

if __name__ == '__main__':
	if (os.path.isdir(PHOTOS) == False): # si le dossier pour stocker les photos n'existe pas
		os.mkdir(PHOTOS) # alors on crée le dossier (sur le bureau)
		os.chmod(PHOTOS,0o777) # et on change les droits pour pouvoir effacer des photos

	while True : #boucle jusqu'a interruption
		try:

			loadpic(imageName_accueil)


			print "\n attente boucle"

			#on attend que le bouton soit pressé
			GPIO.wait_for_edge(18, GPIO.FALLING)
			# on a appuyé sur le bouton...


			#on lance le decompte
			minuterie()


			#on genere le nom de la photo avec heure_min_sec
			date_today = datetime.now()
			nom_image = date_today.strftime('%d_%m_%H_%M_%S')

			#on prend la photo
			chemin_photo = "%s/%s.jpeg" % (PHOTOS,nom_image)
			takepic(chemin_photo) #on prend la photo 

			#on affiche la photo
			loadpic(chemin_photo)
		
			#on affiche un message
			writemessagetransparent("et voila...")

			if (GPIO.input(18) == 0): #si le bouton est encore enfoncé (sont etat sera 0)
      				print("bouton  appuye, je dois repartir au début de ma boucle")
      				break # quitter
				

		except KeyboardInterrupt:
			print 'sortie du programme!'
			raise

	GPIO.cleanup() # reinitialisation GPIO lors d'une sortie normale

?

ok je met juste les photos (en les renommant ) que je souhaite dans le dossier photos et c’est tout?

je sais essayer de suite merci

Bon j’ai relu et effectivement je suis à côté de la plaque et je m’en excuse , la seule chose que j’ai pu faire de bien c’est la fonction minuterie, mais en fait tout dépend de ce que vous voulez faire exactement et comment vous voulez le faire (alpha ? alpha et superposition fait par photoshop? alpha et superposition programmé en python ?

re,

un très grand merci deja pour ce code tu m’as vraiment aide
alors superbe ça marche reste que 1 petit truc a fignoler si tu peux m’aider
donc j’ai bien mon intro :

mon decompte :

la prise de vue :

le problème est juste la apres il m’affiche la photo prise 1 sec avant de revenir a l’ecran d’accueil.
Je voudrais l’affichage de la photo genre 3-5 seconde en gros.
Merci

Derien , mais quel code celui que j’ai édité en dernier (car j’ai fais au moins 3 modifes )

Il faut ajouter :

		#on affiche la photo
		loadpic(chemin_photo)
	
		#on affiche un message
		writemessagetransparent("et voila...")

		if (GPIO.input(18) == 0): #si le bouton est encore enfoncé (sont etat sera 0)
  				print("bouton  appuye, je dois repartir au début de ma boucle")
  				break # quitter
			
                time.spleep(5)
	except KeyboardInterrupt:
		print 'sortie du programme!'
		raise 

time.sleep(X) ou X est le nombre de secondes à attendre …

Petite astuce, je pense que le décompte avec le fond noir transparent (alpha : 0.9 ou 0.8) pourrais rendre vraiment joli (on verrait par transarence ,mais pas trop, le retour caméra derrière le décompte.

j’ai juste modifie l’incrémentation et il manquait un « . » avant un jpg et un autre truc mais sinon niquel
voila ce que j’ai pour l’instant, avec mon probleme de photo qui s’affiche qu’une demi sec:

[code]#!/usr/bin/env python2.7

-- coding: utf-8 -

import RPi.GPIO as GPIO
import time
from datetime import datetime
from PIL import Image
import pygame
from pygame.locals import *
import os

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)

PHOTOS = « /home/pi/Desktop/photos »
APP_RESSOURCES = « /home/pi/Desktop/ressources »
imageName_accueil = « %s/accueil.jpg » %APP_RESSOURCES
imageName_compteur_3 = « %s/compteur3.jpg » % APP_RESSOURCES
imageName_compteur_2 = « %s/compteur2.jpg » % APP_RESSOURCES
imageName_compteur_1 = « %s/compteur1.jpg » % APP_RESSOURCES
imageName_souriez = « %s/souriez.jpg » % APP_RESSOURCES

pygame.init()
screen = pygame.display.set_mode((0,0),pygame.FULLSCREEN)
width, height = screen.get_size()

def takepic(imageName): #prend une photo (note: il faut selectionner la ligne qui correspond à votre installation en enlevant le premier # )
command = « sudo raspistill -t 1000 -w 960 -h 720 -o « + imageName + » -q 80 » #prend une photo
# command = « sudo raspistill -t 1000 -w 960 -h 720 -o « + imageName + » -rot 90 -q 80 » #prend une photo et la tourne de 90°
# command = « sudo raspistill -t 1000 -w 960 -h 720 -o « + imageName + » -rot 180 -q 80 » #prend une photo et la tourne de 180°
# command = « sudo raspistill -t 1000 -w 960 -h 720 -o « + imageName + » -rot 270 -q 80 » #prend une photo et la tourne de 270°
os.system(command)

def loadpic(imageName): # affiche imagename
print("loading image: " + imageName)
background = pygame.image.load(imageName);
background.convert_alpha()
background = pygame.transform.scale(background,(width,height))
screen.blit(background,(0,0),(0,0,width,height))
pygame.display.flip()

def minuterie():
#writemessage(" 3")
loadpic(imageName_compteur_3)
time.sleep(1)
#writemessage(" 2")
loadpic(imageName_compteur_2)
time.sleep(1)
#writemessage(" 1")
loadpic(imageName_compteur_1)
time.sleep(1)
#writemessage(« souriez »)
loadpic(imageName_souriez)

def writemessage(message): # pour pouvoir afficher des messages sur un font noir
screen.fill(pygame.Color(0,0,0))
font = pygame.font.SysFont(« verdana », 250, bold=1)
textsurface = font.render(message, 1, pygame.Color(255,255,255))
screen.blit(textsurface,(35,40))
pygame.display.update()

def writemessagetransparent(message): # pour pouvoir afficher des messages en conservant le font
font = pygame.font.SysFont(« verdana », 50, bold=1)
textsurface = font.render(message, 1, pygame.Color(255,255,255))
screen.blit(textsurface,(35,40))
pygame.display.update()

if name == ‹ main ›:
if (os.path.isdir(PHOTOS) == False): # si le dossier pour stocker les photos n’existe pas
os.mkdir(PHOTOS) # alors on crée le dossier (sur le bureau)
os.chmod(PHOTOS,0o777) # et on change les droits pour pouvoir effacer des photos

while True : #boucle jusqu’a interruption
try:
loadpic(imageName_accueil)

#on attend que le bouton soit pressé
    GPIO.wait_for_edge(18, GPIO.FALLING)
# on a appuyé sur le bouton...

#on lance le decompte
    minuterie()

#on genere le nom de la photo avec heure_min_sec
    date_today = datetime.now()
    nom_image = date_today.strftime('%d_%m_%H_%M_%S')

#on prend la photo
    chemin_photo = "%s/%s.jpeg" % (PHOTOS,nom_image)
    takepic(chemin_photo) #on prend la photo 

#on affiche la photo
    loadpic(chemin_photo)
    
    if (GPIO.input(18) == 0): #si le bouton est encore enfoncé (sont etat sera 0)
  		      print("bouton  appuye, je dois repartir au début de ma boucle")
  		      continue # alors on sort du while

except KeyboardInterrupt:
print ‹ sortie du programme! ›
raise

GPIO.cleanup() # reinitialisation GPIO lors d’une sortie normale[/code]

tres bonne idée pour le décompte transparent… euh je fais ça comment?
Désolé si j’en demande trop mais j’ai plus avancé en 10 min qu’en 15 jours ou personne ne me répondait sur différents forums.

OK par contre il faudrait remplacer le ‹ continue › dans la boucle while par break , car c’est le bouton pour « casser (break en anglais) » la boucle (sortir de la boucle) et donc arrêter l’application lors du maintien bouton.Continu veut dire retour au début de la boucle , donc la l’application ne se termine pas lors du maintien je me trompe?

Pour la transparence il faut utiliser un fichier image au format PNG et donc créer une image avec fond transparent , puis par exemple, en plein milieu ajouter un chiffre 2 (qui au passage peut être créé programmatiquement) et enregistrer ,… au format PNG puis il faut regarder du coté de pygame comment ajouter un arriere plan sur toute l’image et lui donner un alpha et par dessus charger l’image du chiffre 2 . Je vois background.convert_alpha() dans le code fourni , donc je pense que c’est faisable.

Je ne connais pas la librairie pygame donc je ne peux pas vous sortir le code mais laissez moi un peu de temps je vais regarder ça .

Pour l’image transparente photoshop fera l’affaire.

je viens de tester avec break
l’appli se fige sur ma photo et ne repars pas au debut
je suis oblige de reboot le raspberry

Le break est bien indenté ? il doit être dans le scope du ‹ if › pour être effectif que lors de l’appui bouton

if __name__ == '__main__':
if (os.path.isdir(PHOTOS) == False): # si le dossier pour stocker les photos n'existe pas
	os.mkdir(PHOTOS) # alors on crée le dossier (sur le bureau)
	os.chmod(PHOTOS,0o777) # et on change les droits pour pouvoir effacer des photos

while True : #boucle jusqu'a interruption
	try:

		loadpic(imageName_accueil)


		print "\n attente boucle"

		#on attend que le bouton soit pressé
		GPIO.wait_for_edge(18, GPIO.FALLING)
		# on a appuyé sur le bouton...


		#on lance le decompte
		minuterie()


		#on genere le nom de la photo avec heure_min_sec
		date_today = datetime.now()
		nom_image = date_today.strftime('%d_%m_%H_%M_%S')

		#on prend la photo
		chemin_photo = "%s/%s.jpeg" % (PHOTOS,nom_image)
		takepic(chemin_photo) #on prend la photo 

		#on affiche la photo
		loadpic(chemin_photo)
	
		#on affiche un message
		writemessagetransparent("et voila...")

		if (GPIO.input(18) == 0): #si le bouton est encore enfoncé (sont etat sera 0)
  				print("bouton  appuye, je dois sortir de ma boucle")
  				break # quitter la boucle , gpio cleanup ...
		else # J'attend 5 secondes avent de repartir au début de l'application
		      time.sleep(5) # attendre 5 secondes avant retour accueil
	except KeyboardInterrupt:
		print 'sortie du programme!'
		raise

GPIO.cleanup() # reinitialisation GPIO lors d'une sortie normale

Je pense savoir pourquoi, il faut faire un ‹ reset › de l’instance de pygame:

screen.blit(background, (0,0)) …

mais il faut le placer au bon endroit et donc la il faut modifier le code et en faire une classe pour que cela soit plus simplepour le dev car il y a des mofifes à faire.

Si votre appui bouton prolongé arrête actuellement le script , je n’y comprend plus rien, car ce n’est pas possible avec un continue de sortir de la boucle et donc pour le coup stopper l’app.

super ça marche!!! vraiment merci!
je viens de faire sous photoshop mon décompte sur fond transparent avec les chiffres ecrit en blanc
comme ca au cas ou si tu as la soluce pour avoir l’image de ma camera en arriere plan.

et sinon il y a un petit truc pas tres beau, quand il prend la photo il l’affiche pas en plein écran du coup je vois mon image de « prenez la pose » en arriere plan
par contre juste apres il m’affiche bien ma photo en fullscreen pendant 5 sec.
C’est uniquement la seconde ou il prend la photo ou on voit l’ecran d’avant en arriere plan.

Ok je regarde du coté de pygame pour l’image transparente.
Aussi pour le ‹ bug › d’affichage (c’est normal, car on ajoute des objets python (ici une image) et on ne l’enleve jamais , voilà pourquoi ma réflexion dans mon post précédent) Il faut appeler : screen.blit(background, (0,0)), mais background est créé uniquement dans la fonction loadpic … laissez moi quelques minutes je regarde tout ça.

Si vous voulez essayer ceci et me dire si cela corrige le bug d’affichage (je réfléchis maintenant à l’opacité pour le retour de la cam en background) :

#!/usr/bin/env python2.7
# -*- coding: utf-8 -*
import RPi.GPIO as GPIO
import time
from datetime import datetime
from PIL import Image
import pygame
from pygame.locals import *
import os


# GPIO INIT
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)

# PYGAME INIT
pygame.init()
screen = pygame.display.set_mode((0,0),pygame.FULLSCREEN)
width, height = screen.get_size()

# PERSONNAL CONFIGURATION
PHOTOS                      = "/home/pi/Desktop/photos"
APP_RESSOURCES              = "/home/pi/Desktop/ressources"

imageName_accueil           = "%s/accueil.jpg"   % APP_RESSOURCES
imageName_compteur_3        = "%s/compteur3.jpg" % APP_RESSOURCES
imageName_compteur_2        = "%s/compteur2.jpg" % APP_RESSOURCES
imageName_compteur_1        = "%s/compteur1.jpg" % APP_RESSOURCES
imageName_souriez           = "%s/souriez.jpg"   % APP_RESSOURCES

ATTENTE_RETOUR_ACCUEIL      = 5 # secondes


# GLOBAL VARIABLE FOR ACCESS IN ALL SCOPE
global background,textsurface

def takepic(imageName): #prend une photo (note: il faut selectionner la ligne qui correspond à votre installation en enlevant le premier # )
    command = "sudo raspistill -t 1000 -w 960 -h 720 -o "+ imageName +" -q 80" #prend une photo
    # command = "sudo raspistill -t 1000 -w 960 -h 720 -o "+ imageName +" -rot 90 -q 80" #prend une photo et la tourne de 90°
    # command = "sudo raspistill -t 1000 -w 960 -h 720 -o "+ imageName +" -rot 180 -q 80" #prend une photo et la tourne de 180°
    # command = "sudo raspistill -t 1000 -w 960 -h 720 -o "+ imageName +" -rot 270 -q 80" #prend une photo et la tourne de 270°
    os.system(command)
def loadpic(imageName): # affiche imagename
	global background
    print("loading image: " + imageName)
    background = pygame.image.load(imageName);
    background.convert_alpha()
    background = pygame.transform.scale(background,(width,height))
    screen.blit(background,(0,0),(0,0,width,height))
    pygame.display.flip()
def minuterie():
  #writemessage(" 3")
  loadpic(imageName_compteur_3)
  time.sleep(1)
  #writemessage(" 2")
  loadpic(imageName_compteur_2)
  time.sleep(1)
  #writemessage(" 1")
  loadpic(imageName_compteur_1)
  time.sleep(1)
  #writemessage("souriez")
  loadpic(imageName_souriez)
def writemessage(message): # pour pouvoir afficher des messages sur un font noir
	global textsurface
    screen.fill(pygame.Color(0,0,0))
    font = pygame.font.SysFont("verdana", 250, bold=1)
    textsurface = font.render(message, 1, pygame.Color(255,255,255))
    screen.blit(textsurface,(35,40))
    pygame.display.update()
def writemessagetransparent(message): # pour pouvoir afficher des messages en conservant le font
	global textsurface
    font = pygame.font.SysFont("verdana", 50, bold=1)
    textsurface = font.render(message, 1, pygame.Color(255,255,255))
    screen.blit(textsurface,(35,40))
    pygame.display.update()

def cleanScreenPyGameElements():
	global background,textsurface
	screen.blit(background, (0,0))
	screen.blit(textsurface, (0,0))
	pygame.display.update()



if __name__ == '__main__':
        if (os.path.isdir(PHOTOS) == False): # si le dossier pour stocker les photos n'existe pas
           os.mkdir(PHOTOS) # alors on crée le dossier (sur le bureau)
           os.chmod(PHOTOS,0o777) # et on change les droits pour pouvoir effacer des photos
		while True : #boucle jusqu'a interruption
		  try:
		        loadpic(imageName_accueil)
		    #on attend que le bouton soit pressé
		    GPIO.wait_for_edge(18, GPIO.FALLING)
			# on a appuyé sur le bouton...

			#on lance le decompte
		    minuterie()

			#on genere le nom de la photo avec heure_min_sec
		    date_today = datetime.now()
		    nom_image = date_today.strftime('%d_%m_%H_%M_%S')

			#on prend la photo
		    chemin_photo = "%s/%s.jpeg" % (PHOTOS,nom_image)
		    
		    cleanScreenPyGameElements() # nettoyer les éléments créés avec python

		    takepic(chemin_photo) #on prend la photo 

			#on affiche la phot			
		    loadpic(chemin_photo)
		    
		    if (GPIO.input(18) == 0): #si le bouton est encore enfoncé (sont etat sera 0)
		  		      print("bouton  appuye, je dois repartir au début de ma boucle")
		  		      continue # alors on sort du while

		    time.sleep(ATTENTE_RETOUR_ACCUEIL)
		  except KeyboardInterrupt:
		    print 'sortie du programme!'
		    raise
		GPIO.cleanup() # reinitialisation GPIO lors d'une sortie normale

POur le décompte essayez avec vos images transparentes :

 imageName_accueil           = "%s/accueil.png"   % APP_RESSOURCES
imageName_compteur_3        = "%s/compteur3.png" % APP_RESSOURCES
imageName_compteur_2        = "%s/compteur2.png" % APP_RESSOURCES
imageName_compteur_1        = "%s/compteur1.png" % APP_RESSOURCES
imageName_souriez           = "%s/souriez.png"   % APP_RESSOURCES

oui super ça marchait pas avant mais forcément j’avais change les images en png et je ne l’avais pas fait dans le script

merci infiniment pour la super aide :wink: