Cet article détaille un programme Python complet qui permet de gérer des environnements virtuels Python sur un Raspberry via une interface graphique créée avec Tkinter. Le programme permet de créer, démarrer, supprimer des environnements virtuels, ainsi que de générer une liste des modules installés. Voici une vue d’ensemble du fonctionnement du code et des fonctionnalités implémentées.
Présentation du Code
1. Imports et Dépendances
Le programme utilise plusieurs modules essentiels :
os
: Pour les opérations de système de fichiers.subprocess
: Pour exécuter des commandes système.tkinter
: Pour créer l’interface graphique.threading
: Pour exécuter des tâches en parallèle sans bloquer l’interface utilisateur.time
: Pour les animations et les délais.
2. Classe ToolTip
La classe ToolTip
est utilisée pour afficher des info-bulles contextuelles. Chaque instance de ToolTip
est attachée à un widget spécifique et affiche un texte lorsqu’on survole le widget.
- Méthodes :
__init__
: Initialise l’info-bulle avec le widget et le texte.show_tooltip
: Affiche l’info-bulle à la position de la souris.hide_tooltip
: Cache l’info-bulle lorsque la souris quitte le widget.
3. Fonctions Principales
Les fonctions suivantes gèrent les opérations sur les environnements Python.
show_status_message
: Affiche ou masque un message de statut dans l’interface graphique pour informer l’utilisateur de l’état des opérations en cours.run_command_with_status
: Exécute une commande système et met à jour l’interface avec une animation pour indiquer que le processus est en cours. Elle gère également les succès et les échecs des commandes.create_env
: Crée un nouvel environnement virtuel Python. Elle demande le nom de l’environnement via une boîte de dialogue et exécute la commande pour créer l’environnement dans un nouveau thread pour éviter de bloquer l’interface graphique.start_env
: Démarre un environnement virtuel dans un terminal. La commandesource bin/activate
est utilisée pour activer l’environnement, etexec bash
pour ouvrir un nouveau shell. La commande est exécutée dans un terminal LXDE (lxterminal).generate_and_open_module_list
: Génère un fichier texte avec la liste des modules installés dans l’environnement virtuel sélectionné et ouvre ce fichier. La méthode d’ouverture du fichier dépend du système d’exploitation.delete_env
: Supprime un environnement virtuel sélectionné après confirmation de l’utilisateur. La commanderm -rf
est utilisée pour supprimer le répertoire de l’environnement.update_env_list
: Met à jour la liste des environnements virtuels affichée dans l’interface graphique.
4. Interface Graphique
Le code crée une interface graphique en utilisant Tkinter avec les éléments suivants :
- Barre d’outils : Contient quatre boutons pour créer, démarrer, lister, et supprimer des environnements. Chaque bouton est équipé d’une info-bulle pour décrire sa fonction.
- Liste des environnements : Une
Listbox
affichant les environnements Python disponibles. Les utilisateurs peuvent sélectionner un environnement pour effectuer des actions dessus. - Label de statut : Affiche les messages d’état pour informer l’utilisateur des opérations en cours.
5. Boucle Principale
La boucle principale de Tkinter est lancée avec root.mainloop()
, ce qui permet à l’interface graphique de rester interactive et de répondre aux actions des utilisateurs.
Conclusion
Ce programme offre une interface graphique complète pour gérer des environnements Python virtuels, facilitant ainsi les tâches courantes telles que la création, la gestion et la suppression d’environnements. Grâce à l’utilisation de Tkinter et de threading, il permet une interaction fluide et réactive avec l’utilisateur tout en exécutant des tâches potentiellement longues en arrière-plan. Le design modulaire du code permet également de facilement étendre ou modifier les fonctionnalités selon les besoins.