3. Notes sur le code¶
Voici un résumé de ce que fait le code. La plupart des commentaires sont déjà présents dans les fichiers, n’hésitez pas à les consulter au besoin.
3.1. Main.py¶
En premier lieu, le programme essaie de détecter s’il y a des problèmes d’initialisation.
D’abord, il détecte si Python peut bel et bien initialiser la fenêtre et, ensuite, si il peut initialiser l’objet PiCamera.
S’il ne peut pas, il lèves deux types d’erreurs et propose des solutions exposées Modules d’exception.
`
L’instance app de la classe PiCameraGUI.py est crée avec win
comme root
et camera
comme objet PiCamera
. Le programme exécute ensuite la ligne:
win.mainloop()
Essentiellement, il s’agit d’une boucle infinie dans laquelle la fenêtre réagit aux divers événements (cliques, touches, déplacements de la souris, etc.).
Pour mieux comprendre la fonction mainloop() de Tkinter, consulter le sujet suivant sur Stack Overflow. Techniquement, le programme n’est pas supposé quitter la boucle mainloop
,
mais si c’est le cas, il se doit d’effacer l’instance camera pour éviter les problèmes de mémoire.
3.2. PiCameraGUI.py¶
Ce fichier contient la classe PiCameraGUI
qui s’occupe de la création de l’interface ainsi que des fonctionnalités du programme.
-
class
PiCameraGUI.
PiCameraGUI
(root, camera, title)[source]¶ Classe pour l’interface graphique de la
PiCamera
Fonctionnalités
- Aperçu en temps réel
- Aperçu de la photo prise
- Prise de photo, vidéo et de photos en séquence
- Zoom et déplacement à l’intérieur de l’image en temps réel
- Ajout de texte et du temps présent sur la photo
- Différents formats de photo supportés
- Rotation et revirement horizontal et vertical de l’image
Parameters: - root (Tk() ou Toplevel()) – Fenêtre principal issue de la librairie
tkinter
- camera (PiCamera()) – Objet caméra issu du module
picamera
- title (String) – Titre de la fenêtre
Voir le fichier
main.py
pour un exemple d’utilisation-
changerRepertoirePhoto
()[source]¶ Change le répertoire d’enregistrement d’un fichier photo
- Ouvre une nouvelle fenêtre
- self.photo_dir: str
-
changerRepertoireVideo
()[source]¶ Change le répertoire d’enregistrement d’un fichier vidéo
- Ouvre une nouvelle fenêtre
- self.video_dir: str
-
recVideo
()[source]¶ Prends un enregistrement vidéo Appelé chaque fois que le bouton vidéo est appuyé
-
verify_resH
()[source]¶ Vérifie si la résolution en hauteur entrée par l’utilisateur est d’un format adéquat
int
-
verify_resW
()[source]¶ Vérifie si la résolution en largeur entrée par l’utilisateur est d’un format adéquat
int
3.3. Disposition de l’interface¶
Si vous devez ajouter, modifier ou supprimer des fonctionnalités, vous devrez connaitre la disposition des objets dans la fenêtre.
Voici l’architecture du logiciel. Les Frames agissent comme des fenêtres qui contiennent les boutons et autres widgets. Les canvas servent à contenir les images.
Elles servent donc à l’organisation et à la disposition. Les buttons
, scales
, entry
, listbox
, spinbox
servent à utiliser ou changer une fonctionnalité.
- 1: self.seqButton
- 2: self.photoButton
- 3: self.videoButton
- 4: self.hflipButton
- 5: self.rotateButton
- 6: self.vflipButton
- 7: self.etatCanvas