Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
issue199:python [2023/11/26 09:08] – d52fr | issue199:python [2023/11/28 17:13] (Version actuelle) – andre_domenech |
---|
Maintenant que votre système est prêt pour le projet, regardons le module de support. Rappelez-vous, PAGE crée des squelettes de toutes les fonctions de rappel et le code de base pour afficher le programme Tkinter. | Maintenant que votre système est prêt pour le projet, regardons le module de support. Rappelez-vous, PAGE crée des squelettes de toutes les fonctions de rappel et le code de base pour afficher le programme Tkinter. |
| |
Tout d'abord, nous devons commencer par les importations. Comme je le fais habituellement, je montrerai le code complet des fonctions, mais lorsqu'il s'agit du code du squelette de la fonction PAGE, je mettrai le code que vous devez ajouter en gras et le reste du code en caractères « normaux ». | Tout d'abord, nous devons commencer par les importations. Comme je le fais habituellement, je montrerai le code complet des fonctions, mais lorsqu'il s'agit du code du squelette de la fonction PAGE, je mettrai le code que vous devriez ajouter en gras et le reste du code en caractères « normaux ». |
| |
En réalité, la seule ligne qui doit se trouver ici est la ligne import sys, mais j'ai créé et appelé une petite fonction qui s'exécute au démarrage pour montrer quelques informations sur le système sur lequel le programme s'exécute, ce qui est souvent utile à des fins de débogage. Vous n'avez donc pas besoin des deux dernières lignes de cette section, à moins que vous n'utilisiez la fonction « show_environ_info ». | En réalité, la seule ligne qui doit se trouver ici est la ligne import sys, mais j'ai créé et appelé une petite fonction qui s'exécute au démarrage pour montrer quelques informations sur le système sur lequel le programme s'exécute, ce qui est souvent utile à des fins de débogage. Vous n'avez donc pas besoin des deux dernières lignes de cette section, à moins que vous n'utilisiez la fonction « show_environ_info ». |
import tkinter.messagebox as messagebox | import tkinter.messagebox as messagebox |
| |
Enfin, nous devons importer la bibliothèque tkintermapview. Comme le programme ne fonctionnera pas du tout sans cette bibliothèque, j'ajoute le piège try|except pour informer l'utilisateur que la bibliothèque n'est pas installée. | En avant-dernier, nous devons importer la bibliothèque tkintermapview. Comme le programme ne fonctionnera pas du tout sans cette bibliothèque, j'ajoute le piège try|except pour informer l'utilisateur que la bibliothèque n'est pas installée. |
| |
try : // d52fr : cette ligne est une commande // | try : // d52fr : cette ligne est une commande // |
cntr = len(markerList)** | cntr = len(markerList)** |
| |
Enfin, le fichier GUI.py est importé pour que les définitions de l'interface graphique soient chargées. | Enfin, le fichier GUI.py est importé pour que les définitions de l'interface graphique soient chargées : |
| |
import tkintermapviewdemo | import tkintermapviewdemo |
La fonction startup (ci-dessous) ne fait pas partie du squelette fourni par PAGE, donc tout est ajouté. Tout d'abord, nous définissons quelques valeurs globales, créons une liste vide appelée markerList, définissons le niveau de zoom par défaut pour la carte et insérons le widget TkinterMapView dans la deuxième TFrame. Assurez-vous d'inclure la ligne .place(x=0,y=0) pour que le widget remplisse complètement la TFrame. | La fonction startup (ci-dessous) ne fait pas partie du squelette fourni par PAGE, donc tout est ajouté. Tout d'abord, nous définissons quelques valeurs globales, créons une liste vide appelée markerList, définissons le niveau de zoom par défaut pour la carte et insérons le widget TkinterMapView dans la deuxième TFrame. Assurez-vous d'inclure la ligne .place(x=0,y=0) pour que le widget remplisse complètement la TFrame. |
| |
Ensuite, nous fournissons un emplacement de départ pour le widget Map. J'ai décidé d'utiliser l'un de mes endroits préférés au monde, le Jardin des Dieux dans le Colorado. Cette commande renvoie un pointeur vers l'objet location. J'ai mis l'option marqueur à True. J'indique ensuite au widget map d'utiliser le niveau de zoom par défaut, j'ajoute le pointeur du marqueur à la liste markerList et je crée une variable nommée cntr pour le numéro de l'élément dans la boîte List. | Ensuite, nous fournissons un emplacement de départ pour le widget Map. J'ai décidé d'utiliser l'un de mes endroits préférés au monde, le Jardin des Dieux dans le Colorado. Cette commande renvoie un pointeur vers l'objet location. J'ai mis l'option marqueur à True. J'indique ensuite au widget map d'utiliser le niveau de zoom par défaut, j'ajoute le pointeur du marqueur à la liste markerList et je crée une variable nommée cntr pour le numéro de l'élément dans la boîte List : |
| |
search_marker = map_widget.set_address("Garden of the Gods, Co", marker=True) | search_marker = map_widget.set_address("Garden of the Gods, Co", marker=True) |
Voici (page suivante, en bas à droite) la fonction show_environ_info. Elle affiche des informations génériques sur le système dans le terminal lorsque le programme est lancé. | Voici (page suivante, en bas à droite) la fonction show_environ_info. Elle affiche des informations génériques sur le système dans le terminal lorsque le programme est lancé. |
| |
La fonction set_bindings (page suivante, en haut à gauche) fait ce que son titre indique. Elle définit les bindings pour le widget Entry et la ScrolllListbox. | La fonction set_bindings (page suivante, en haut à gauche) fait ce que son titre indique. Elle définit les bindings pour le widget Entry et la Scrolled1Listbox. |
| |
Voici la fonction de rappel keypress pour le widget Entry, qui appellera la fonction on_btnGo lorsque l'utilisateur appuiera sur la touche Entrée. | Voici la fonction de rappel keypress pour le widget Entry, qui appellera la fonction on_btnGo lorsque l'utilisateur appuiera sur la touche Entrée : |
| |
def on_entryKeyPress(e) : | def on_entryKeyPress(e) : |
Until next time, as always; stay safe, healthy, positive and creative!** | Until next time, as always; stay safe, healthy, positive and creative!** |
| |
Le callback btnGo obtient l'adresse (ou les coordonnées) du widget Entry, puis appelle la méthode map.widget.set_address pour créer un lieu sur la carte. Nous appelons automatiquement la méthode avec le paramètre marker=True pour nous assurer qu'il existe un marqueur sur la carte. Le retour de la méthode est vérifié pour voir si la recherche d'adresse a réussi. Si c'est le cas, le marqueur est ajouté. Dans le cas contraire, un message d'erreur est affiché à l'utilisateur (page suivante). | Le callback btnGo obtient l'adresse (ou les coordonnées) du widget Entry, puis appelle la méthode map.widget.set_address pour créer un lieu sur la carte. Nous appelons automatiquement la méthode avec le paramètre marker=True pour nous assurer qu'il existe un marqueur sur la carte. Le retour de la méthode est vérifié pour voir si la recherche d'adresse a réussi. Si c'est le cas, le marqueur est ajouté. Dans le cas contraire, un message d'erreur est affiché (page suivante). |
| |
Le tour est joué. Le programme devrait maintenant fonctionner et vous permettre d'afficher des cartes, des marqueurs et des chemins. | Le tour est joué. Le programme devrait maintenant fonctionner et vous permettre d'afficher des cartes, des marqueurs et des chemins. |
// Traduction de la ligne noire de l'encart en bas à droite page 19 // | // Traduction de la ligne noire de l'encart en bas à droite page 19 // |
**This final function simply centres the project in the user’s screen.** | **This final function simply centres the project in the user’s screen.** |
Cette dernière fonction centre simplement le projet dans l'écran de l'utilisateur. | Cette dernière fonction centre le projet dans l'écran de l'utilisateur. |
| |
// Traduction de la ligne noire de l'encart en bas à gauche page 20 // | // Traduction de la ligne noire de l'encart en bas à gauche page 20 // |
**The btnExit callback simply calls sys.exit() to end the program.** | **The btnExit callback simply calls sys.exit() to end the program.** |
La focntion de rappel btnExit appelle simplement sys.exit() à la fin du programme. | La fonction de rappel btnExit appelle simplement sys.exit() pour terminer le programme. |
| |