Bonjour,

Je tente de faire un genre de panneau-menu qui glisse à droite de l'écran pour l'afficher ou le cacher.
Le panneau tourne sur lui même pour afficher d'autres boutons.
Ce projet est réalisé sur rpi-3b

Nom : Capture d’écran.png
Affichages : 521
Taille : 35,7 Ko

Pour ce qui est du graphisme tout va bien les animations fonctionnent comme je veux mais je bloque sur les boutons.

Si j'ai bien compris, il faut utiliser des Rect pour faire les boutons.
Mais je ne comprend pas comment les animer de sort qu'ils suivre l'animation du graphisme.

Voilà mon code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
 
import pygame
from pygame.locals import *
 
pygame.init()
 
fenetre=pygame.display.set_mode((480,320))
 
ouvert=0
angle=0
creme=255,242,224
 
clock=pygame.time.Clock()
 
def image(chaine):
	"""fonctions qui charge les images et rend le fond transparent etc.."""
	img=pygame.image.load(chaine)
	img=img.convert_alpha(img)
	return img
 
btnC_img=image("./data/images/btnCentre.png")
panneau_img=image("./data/images/btnD.png")
panneau_rect=panneau_img.get_rect()
btnQ_img=image("./data/images/btnQ.png")
btnQ_rect=btnQ_img.get_rect()
 
panneau_rect.move_ip(320,0)
btnQ_rect.clamp_ip(panneau_rect)
btnQ_rect.move_ip(105,270)
panneau_img.blit(btnQ_img, btnQ_rect)
 
btnOuvre=pygame.Rect(460,110,20,106)
btnDroite=pygame.Rect(460,0,20,106)
btnGauche=pygame.Rect(460,220,20,106)
 
def panDAff():
	"""fonction qui affiche ou cache le menu"""
	global angle, ouvert
	if ouvert == 0:
		ouvert = 1
		position = panneau_img.get_rect(topleft = (480,0))
		rect_origine = panneau_img.get_rect(topleft = (320,0))
		panneau_img.blit(btnC_img,(105,10))
		panneau_img.blit(btnC_img,(45,45))
		panneau_img.blit(btnC_img,(10,105))
		panneau_img.blit(btnC_img,(10,175))
		panneau_img.blit(btnC_img,(45,235))
		panneau_img.blit(btnQ_img,(105,270))
 
		for x in range(53):   #animer images
			fenetre.fill((creme))#effacer
			position = position.move(-3, 0)   #déplacer
			fenetre.blit(panneau_img, position) #dessiner à nouveau
			pygame.display.flip() #afficher le tout
			pygame.time.delay(3)#arrêter le programme
	elif ouvert == 1:
		position = panneau_img.get_rect(topleft = (320,0))
		for x in range(70):   #animer images
			fenetre.fill((creme))#effacer
			position = position.move(3, 0)   #déplacer
			fenetre.blit(panneau_img, position) #dessiner à nouveau
			pygame.display.flip() #afficher le tout
			pygame.time.delay(5) #arrêter le programme
		ouvert=0
		angle=0
 
def navTourneG():
	"""fonction qui tourne le menu """
	global angle
	if ouvert == 1:
		rect_origine = panneau_img.get_rect(topleft = (320,0))
		for chaque in range(45):   #animer  images
			fenetre.fill((creme))#effacer
			fond = pygame.transform.rotate(panneau_img,angle)
			rect = fond.get_rect()
			rect.center = rect_origine.center
			fenetre.blit(fond,(rect))
			if angle > 360:
				angle=0
			else:
				angle=angle+1
			pygame.display.flip()
			pygame.time.delay(5)
 
def navTourneD():
	"""fonction qui fait tourner le menu"""
	global angle
	if ouvert == 1:
		rect_origine = panneau_img.get_rect(topleft = (320,0))
		for chaque in range(45):   #animer  images
			fenetre.fill((creme))#effacer
			fond = pygame.transform.rotate(panneau_img,angle)
			rect = fond.get_rect()
			rect.center = rect_origine.center
			fenetre.blit(fond,(rect))
			if angle > 360:
				angle=0
			else:
				angle=angle-1
			pygame.display.flip()
			pygame.time.delay(5)
 
continuer = 1
while continuer:
	for event in pygame.event.get():
		if event.type==QUIT:
		  continuer=0
		if event.type == KEYDOWN:
			if event.key == K_ESCAPE:
				continuer=0
				pygame.quit()
		if event.type == MOUSEBUTTONDOWN and event.button == 1 :
			if btnOuvre.collidepoint(event.pos):
				panDAff()
			if btnGauche.collidepoint(event.pos):
				navTourneG()
			if btnDroite.collidepoint(event.pos):
				navTourneD()
			if btnQ_rect.collidepoint(event.pos):
				print("Quitter")
Comment faire pour que mes boutons suivre les déplacement du graphisme.

Merci pour votre aide.