issue143:python
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
issue143:python [2019/04/08 09:46] – d52fr | issue143:python [2019/04/11 13:58] (Version actuelle) – andre_domenech | ||
---|---|---|---|
Ligne 9: | Ligne 9: | ||
Une interface graphique pour Pandas | Une interface graphique pour Pandas | ||
- | Nous continuerons notre série sur l' | + | Nous continuerons notre série sur l' |
- | Pandastable a été créé par le Dr Damien Farrell et il est basé sur un de ses anciens projets appelé tkintertable. C'est un gadget merveilleux pour traiter les choses que nous avons apprises sur Pandas dans un format de GUI. Vous pouvez récupérer tout le code source de pandastable à https:// | + | Pandastable a été créé par le Dr Damien Farrell et il est basé sur un de ses anciens projets appelé tkintertable. C'est un gadget merveilleux pour traiter les choses que nous avons apprises sur Pandas dans une interface graphique. Vous pouvez récupérer tout le code source de pandastable à https:// |
Farrell, D 2016 DataExplore: | Farrell, D 2016 DataExplore: | ||
Ligne 23: | Ligne 23: | ||
I will be using the latest version of Page (4.21) that was released on March 1, 2019 and can be downloaded from https:// | I will be using the latest version of Page (4.21) that was released on March 1, 2019 and can be downloaded from https:// | ||
- | Maintenant, commençons. Pour utiliser le gadget pandastable, | + | Maintenant, commençons. Pour utiliser le gadget pandastable, |
pip3 install pandastable | pip3 install pandastable | ||
- | (Si, quand vous essayez de lancer le programme ci-dessous, vous recevez un message d' | + | (Si, quand vous essayez de lancer le programme ci-dessous, vous recevez un message d' |
- | J' | + | J' |
- | **Now that we have pandastable and Page, we can go ahead and start designing the form. Start Page and move the new Topmost form to somewhere near the center of the screen. You can size it to any dimensions you wish, but I used 1004 for the width and 785 for the height for this demo. Set the title to " | + | **Now that we have pandastable and Page, we can go ahead and start designing the form . Start Page and move the new Topmost form to somewhere near the center of the screen. You can size it to any dimensions you wish, but I used 1004 for the width and 785 for the height for this demo. Set the title to " |
We will add two frames, one " | We will add two frames, one " | ||
Ligne 38: | Ligne 38: | ||
The second frame will be called " | The second frame will be called " | ||
+ | |||
+ | Maintenant que nous avons pandastable et Page, nous pouvons commencer la conception et la forme [[https:// | ||
+ | |||
+ | Nous ajouterons deux cadres, un bouton Tk « standard » et un gadget Page personnalisé. C'est tout ce dont nous avons besoin. | ||
+ | |||
+ | Le premier cadre sera appelé « frameToolbar » (widget alias - alias de gadget) et devrait être placé tout en haut de la forme. J'ai utilisé X=2 et Y=2, une hauteur de 40 et une largeur de 1000. | ||
+ | |||
+ | Le deuxième cadre sera appelé « frameCustom » et contiendra notre gadget personnalisé (pandastable). Je l'ai placé quelques pixels sous le cadre de la barre d' | ||
**Next, place a standard Tk button within the toolbar frame. Set the Alias to " | **Next, place a standard Tk button within the toolbar frame. Set the Alias to " | ||
Ligne 44: | Ligne 52: | ||
Here is what the GUI looks like on my system at this point...** | Here is what the GUI looks like on my system at this point...** | ||
+ | |||
+ | Ensuite, placez un bouton Tk standard dans le cadre de la barre d' | ||
+ | |||
+ | Enfin, descendez vers le bas de la barre d' | ||
+ | |||
+ | Voici à quoi ressemble le GUI sur mon système actuellement : | ||
**That' | **That' | ||
Ligne 52: | Ligne 66: | ||
from pandastable import Table** | from pandastable import Table** | ||
+ | |||
+ | C'est tout. Sauvegardez le fichier .tcl (File | Save - Fichier | Enregistrer) dans un répertoire convenable en appelant le fichier « pandastabledemo ». Ensuite, sélectionnez la ligne de menu « Gen_Python » (générer Python) et générez le fichier du GUI et le module de Support (ils auront le même nom de base que notre fichier .tcl, mais ils seront nommés pandastabledemo.py and pandastabledemo_support.py). | ||
+ | |||
+ | Maintenant, vous pouvez fermer Page et ouvrir les deux fichiers Python dans votre environnement de développement (IDE) préféré. Vous n' | ||
+ | |||
+ | La première chose que nous avons à faire est d' | ||
+ | |||
+ | from pandastable import Table | ||
**Notice that we are currently only importing the Table portion. That's ok, it's not limiting us. Next, let's finish the code for our callback function " | **Notice that we are currently only importing the Table portion. That's ok, it's not limiting us. Next, let's finish the code for our callback function " | ||
Ligne 64: | Ligne 86: | ||
Custom = Table** | Custom = Table** | ||
+ | |||
+ | Notez que nous n' | ||
+ | |||
+ | destroy_window() | ||
+ | |||
+ | Ceci fermera notre programme proprement. Maintenant descendez en bas du fichier source et trouvez la ligne qui dit : | ||
+ | |||
+ | Custom = tk.Frame | ||
+ | |||
+ | Habituellement, | ||
+ | |||
+ | Custom = Table | ||
**This creates a pointer to the pandastable import that we set a few lines ago. Now we'll edit the " | **This creates a pointer to the pandastable import that we set a few lines ago. Now we'll edit the " | ||
Ligne 82: | Ligne 116: | ||
That’s all the code changes we need to do. Save your file and we'll discuss what these lines do.** | That’s all the code changes we need to do. Save your file and we'll discuss what these lines do.** | ||
+ | |||
+ | Ceci crée un pointeur vers l' | ||
+ | |||
+ | csvfile = " | ||
+ | |||
+ | pt = Table(w.frameCustom, | ||
+ | | ||
+ | # Show the table (montrer la table) | ||
+ | pt.show() | ||
+ | | ||
+ | # Import the CSV into the widget (importer le CSV dans le gadget) | ||
+ | |||
+ | pt.importCSV(csvfile) | ||
+ | |||
+ | # update the widget (mettre à jour le gadget) | ||
+ | pt.update() | ||
+ | |||
+ | Ce sont les seuls changements de code dont nous avons besoin. Enregistrez le fichier et nous présenterons ce que font ces lignes. | ||
**The first line, assigns the name of our CSV file to " | **The first line, assigns the name of our CSV file to " | ||
Ligne 90: | Ligne 142: | ||
Now run your program and you should see something like that shown below.** | Now run your program and you should see something like that shown below.** | ||
+ | |||
+ | La première ligne assigne le nom de notre fichier CSV à « BreadBasket.csv » (assurez-vous de copier votre fichier csv dans votre répertoire de travail, ou ajoutez-lui le chemin complet), qui est le fichier que nous avons utilisé précédemment dans cette série. Ensuite, nous initialisons le gadget pandastable. Nous lui créons un alias nommé « pt ». Ensuite, nous lui disons que son parent est (w.frameCustom) et que nous voulons montrer à la fois la barre d' | ||
+ | |||
+ | Ensuite, nous appelons la méthode .show() de pandastable et importons le fichier csv. Enfin et surtout, nous appelons la fonction .update() du gadget de la table. | ||
+ | |||
+ | C'est tout. Tout le reste est contenu dans pandastable lui-meme. Au total, ce sont 8 lignes (sans compter les commentaires) que nous avons ajoutées au code que Page nous avait fourni. | ||
+ | |||
+ | Maintenant, lançez votre programme et vous devriez voir quelque chose comme ce qui est présenté ci-dessous. | ||
**Even on my old and slow machine, the form pops up almost immediately, | **Even on my old and slow machine, the form pops up almost immediately, | ||
Ligne 98: | Ligne 158: | ||
If you right-click a column header, it brings up yet another context menu that allows you to sort, set as index, delete columns, fill a column with data, add columns, and more.** | If you right-click a column header, it brings up yet another context menu that allows you to sort, set as index, delete columns, fill a column with data, add columns, and more.** | ||
+ | |||
+ | Même sur ma vieille et lente machine, la forme s' | ||
+ | |||
+ | Nous pouvons redimmensionner les colonnes pour qu' | ||
+ | |||
+ | Sur le côté gauche se trouvent les entêtes de lignes. Un clic droit dessus affichera un autre menu contextuel qui vous permet de trier, de remettre à zéro et d' | ||
**The status bar along the bottom shows the number of rows and columns, allows you to zoom in and out, and expand or contract the columns. | **The status bar along the bottom shows the number of rows and columns, allows you to zoom in and out, and expand or contract the columns. | ||
Ligne 106: | Ligne 172: | ||
From here, I simply selected the bar graph from the plot type dropdown, and grouped by date. You can see the resulting image.** | From here, I simply selected the bar graph from the plot type dropdown, and grouped by date. You can see the resulting image.** | ||
+ | |||
+ | En bas, la barre de statut montre le nombre de lignes et de colonnes, vous permet d' | ||
+ | |||
+ | À droite, la barre d' | ||
+ | |||
+ | J'ai chargé un autre petit fichier csv, pour montrer la fonction de traçage. C'est en gros une liste des pas qu'un ami, qui se remettait d'une opération était capable de faire, par jour. Il l'a fait comme un simple fichier texte, mais je l'ai converti en CSV juste pour ce projet. En sélectionnant les colonnes Date et Steps (pas), puis en cliquant sur le bouton « plot » (tracer) de la barre d' | ||
+ | |||
+ | À partir de là, j'ai simplement sélectionné le graphique à barres dans la liste déroulante des types de graphique, et regroupé par date. Vous pouvez voir l' | ||
**I can’t tell Dr. Farrell how much I appreciate his kind permission to use his widget to show how easy it is to create a very powerful program using Page and his pandastable widget. It was completely painless. | **I can’t tell Dr. Farrell how much I appreciate his kind permission to use his widget to show how easy it is to create a very powerful program using Page and his pandastable widget. It was completely painless. | ||
Ligne 114: | Ligne 188: | ||
Until next time, have fun playing with your new app and learning more about Pandas.** | Until next time, have fun playing with your new app and learning more about Pandas.** | ||
+ | |||
+ | Je ne peux pas dire au Dr Farrell combien j' | ||
+ | |||
+ | Ainsi, le but de cet exercice est de vous montrer qu'en quelques minutes dans Page, avec 8 lignes de code et le gadget pandastable, | ||
+ | |||
+ | Bien sûr, il existe une autre option. Vous pouvez simplement suivre les indications sur la page du Dr Farrell pour installer avec snap l' | ||
+ | |||
+ | Jusqu' | ||
issue143/python.1554709563.txt.gz · Dernière modification : 2019/04/08 09:46 de d52fr