issue58:tuto_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 | ||
issue58:tuto_python [2012/03/14 18:35] – frangi | issue58:tuto_python [2012/03/25 15:18] (Version actuelle) – fredphil91 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | |||
** | ** | ||
This month, we'll explore yet another GUI designer, this time for Tkinter. Many people have an issue with Tkinter because it doesn' | This month, we'll explore yet another GUI designer, this time for Tkinter. Many people have an issue with Tkinter because it doesn' | ||
Ligne 7: | Ligne 8: | ||
** | ** | ||
- | Ce mois-ci, nous allons explorer encore un autre concepteur graphique, cette fois c'est Tkinter. Beaucoup de gens ont un problème avec Tkinter, car il n' | + | Ce mois-ci, nous allons explorer encore un autre concepteur graphique, cette fois c' |
Pré-requis | Pré-requis | ||
- | Vous devez avoir TCK/TK 8.5.4 ou plus, Python 2.6 ou plus, et pyttk, que vous pouvez obtenir (si vous ne l'avez pas encore) à partir de http:// | + | Vous devez avoir TCK/TK 8.5.4 ou plus, Python 2.6 ou plus et pyttk, que vous pouvez obtenir (si vous ne l'avez pas encore) à partir de http:// |
** | ** | ||
Ligne 33: | Ligne 34: | ||
Installation | Installation | ||
- | Vous ne pouvez | + | Vous ne pouvez vraiment |
Apprentissage de Page | Apprentissage de Page | ||
- | Lorsque vous démarrez Page, vous aurez trois fenêtres (formulaires). L'une est une «piste | + | Lorsque vous démarrez Page, vous aurez trois fenêtres (formulaires). L'une est une « piste de lancement », l' |
Pour démarrer un nouveau projet, cliquez sur le bouton du haut dans la boîte à outils. | Pour démarrer un nouveau projet, cliquez sur le bouton du haut dans la boîte à outils. | ||
Ligne 43: | Ligne 44: | ||
Cela crée votre formulaire principal. Vous pouvez le déplacer où vous le souhaitez sur votre écran. Ensuite, et à partir de maintenant, cliquez sur un widget dans la boîte à outils, puis cliquez sur l' | Cela crée votre formulaire principal. Vous pouvez le déplacer où vous le souhaitez sur votre écran. Ensuite, et à partir de maintenant, cliquez sur un widget dans la boîte à outils, puis cliquez sur l' | ||
- | Pour l' | + | Pour l' |
- | Ensuite, dans le formulaire de lancement, cliquez sur la fenêtre | + | Ensuite, dans le formulaire de lancement, cliquez sur Fenêtre (Window) |
** | ** | ||
Ligne 52: | Ligne 53: | ||
Next click in the main form someplace where the button isn't. The attribute editor form now shows the attributes for the main form. Find the “title” field and change this from “New Toplevel 1” to “Test Form”. | Next click in the main form someplace where the button isn't. The attribute editor form now shows the attributes for the main form. Find the “title” field and change this from “New Toplevel 1” to “Test Form”. | ||
** | ** | ||
+ | |||
+ | Ici, nous pouvons définir d' | ||
+ | |||
+ | Ensuite, cliquez quelque part dans le formulaire principal où le bouton n'est pas. Le formulaire éditeur d' | ||
+ | |||
** | ** | ||
Ligne 62: | Ligne 68: | ||
Click Save. If, at this point, you were to look in your PageProjects folder, you will see the python file (TestForm.py). Now click on the Run button. In a few seconds, you'll see the project start up. The button is not connected to anything yet, so it won't do anything if you click on it. Simply close the form with the “X” in the corner of the window. Now close the Python Console window with the close button at the bottom right. | Click Save. If, at this point, you were to look in your PageProjects folder, you will see the python file (TestForm.py). Now click on the Run button. In a few seconds, you'll see the project start up. The button is not connected to anything yet, so it won't do anything if you click on it. Simply close the form with the “X” in the corner of the window. Now close the Python Console window with the close button at the bottom right. | ||
** | ** | ||
+ | |||
+ | Maintenant, avant de sauvegarder notre projet, nous avons besoin de créer un dossier pour contenir nos fichiers de projet. Créez un dossier quelque part sur votre disque appelé « PageProjects ». Puis, dans la fenêtre de lancement, sélectionnez File puis Save As. Allez dans votre dossier PageProjects et, dans la boîte de dialogue, tapez TestForm.tclet et cliquez sur le bouton Save. Noter que cela est enregistré comme fichier TCL, pas comme fichier Python. Ensuite, nous allons créer le fichier python. | ||
+ | |||
+ | Dans la fenêtre de lancement, cherchez le menu Gen_Python et cliquez dessus. Sélectionnez Generate Python et un nouveau formulaire apparaît. | ||
+ | |||
+ | Page a généré (comme son nom l' | ||
+ | |||
+ | Cliquez sur Save. Si, à ce stade, vous deviez regarder dans votre dossier PageProjects, | ||
** | ** | ||
Ligne 74: | Ligne 88: | ||
The first button on the left is the Add button. Click it. In the Function box, type “py: | The first button on the left is the Add button. Click it. In the Function box, type “py: | ||
** | ** | ||
+ | |||
+ | De retour à notre formulaire principal, sélectionnez le bouton Exit et faites un clic droit dessus. Sélectionnez « Bindings... ». Dans le menu se trouve un ensemble de boutons. | ||
+ | |||
+ | Le premier sur la gauche vous permet de créer une nouvelle liaison. Cliquez sur « Bouton-1 ». Cela nous permet de paramétrer la liaison pour le bouton gauche de la souris. | ||
+ | |||
+ | Enregistrez et générez le code python à nouveau. Faites défiler le code dans la console Python jusqu' | ||
+ | |||
+ | Sur la fenêtre de lancement, cliquez sur Window puis sélectionnez Function List. Ici, nous allons écrire notre méthode pour fermer la fenêtre. | ||
+ | |||
+ | Le premier bouton à gauche est le bouton Add. Cliquez dessus. Dans la zone Function, tapez « py: | ||
** | ** | ||
Ligne 84: | Ligne 108: | ||
Now save and generate your python code. | Now save and generate your python code. | ||
** | ** | ||
+ | |||
+ | def Button1Click(p1): | ||
+ | sys.exit() | ||
+ | | ||
+ | Cliquez sur la coche et nous avons terminé avec cela. | ||
+ | |||
+ | Ensuite, nous devons lier cette routine au bouton. Sélectionnez le bouton dans le formulaire, faites un clic droit dessus et sélectionnez « Bindings... ». Comme précédemment, | ||
+ | Maintenant, sauvegardez et générez votre code python. | ||
** | ** | ||
Ligne 97: | Ligne 129: | ||
Now, if you run your code and click on the Exit button, the form should close properly. | Now, if you run your code and click on the Exit button, the form should close properly. | ||
- | ** | + | ** |
+ | |||
+ | Vous devriez voir le code suivant vers le bas, mais en dehors de la classe Test_Form... | ||
+ | |||
+ | def Button1Click(p1): | ||
+ | |||
+ | sys.exit() | ||
+ | |||
+ | Et la dernière ligne de la classe devrait être... | ||
+ | |||
+ | self.Button1.bind('< | ||
+ | |||
+ | Maintenant, si vous exécutez votre code et cliquez sur le bouton Exit, le formulaire doit se fermer correctement. | ||
** | ** | ||
Ligne 106: | Ligne 151: | ||
Next, place in the lower frame a label saying “Radio Buttons” and four radio buttons like in the image below. Finally, place an Exit button below the bottom frame. | Next, place in the lower frame a label saying “Radio Buttons” and four radio buttons like in the image below. Finally, place an Exit button below the bottom frame. | ||
** | ** | ||
+ | |||
+ | Pour aller plus loin | ||
+ | |||
+ | Maintenant, nous allons faire quelque chose de plus compliqué. Nous allons créer une démo montrant quelques-uns des widgets qui sont disponibles. D' | ||
+ | |||
+ | Ensuite, placez dans le cadre inférieur une étiquette de texte « Radio Buttons » et quatre boutons radio comme dans l' | ||
+ | |||
** | ** | ||
Ligne 120: | Ligne 172: | ||
Let's add our button bindings. For each button, right click it, select “Bindings...”, | Let's add our button bindings. For each button, right click it, select “Bindings...”, | ||
** | ** | ||
+ | |||
+ | Avant de travailler sur les liaisons, nous allons créer nos fonctions de clic. Ouvrez la liste de fonctions et créez deux fonctions. Le premier devrait être appelé btnNormalClicked et l' | ||
+ | |||
+ | def btnNormalClicked(p1): | ||
+ | |||
+ | print " | ||
+ | |||
+ | def btnSunkenClicked(p1) : | ||
+ | |||
+ | print " | ||
+ | |||
+ | Ajoutons nos liaisons aux boutons. Pour chaque bouton, faites un clic droit dessus, sélectionnez « Bindings... » et ajoutez, comme avant, une liaison aux fonctions que nous avons créées. Pour le bouton normal, cela sera « btnNormalClicked » et pour le bouton creux cela sera « btnSunkenClicked ». Enregistrez et générez votre code. Maintenant, si vous testiez le programme avec l' | ||
+ | |||
** | ** | ||
Ligne 133: | Ligne 198: | ||
** | ** | ||
+ | Maintenant, passons à nos boutons radio. Nous les avons regroupés en deux groupes « clusters ». Les deux premiers (Radio 1 et Radio 2) formeront le groupe 1 et les deux autres seront le groupe 2. Cliquez sur Radio 1 et dans l' | ||
+ | |||
+ | Enfin, vous devez créer une fonction pour le bouton Exit et la lier au bouton, comme nous l' | ||
+ | |||
+ | Si vous avez suivi depuis le début nos autres applications Tkinter, vous devriez être en mesure de comprendre le code montré ci-dessus à droite. Sinon, merci de retourner dans quelques numéros précédents pour lire une présentation complète de ce code. | ||
+ | |||
+ | Vous pouvez voir qu' | ||
+ | |||
+ | Le code python peut être trouvé sur pastebin à http:// | ||
+ | |||
+ | ** | ||
One note before we go for this month. You might have noticed that I've missed a couple of issues. This is due to my wife being diagnosed with cancer last year. As hard as I have tried to keep things from falling through the cracks, a number of things have. One of these things is my old domain/web site at www.thedesignatedgeek.com. I blew it and missed the renewal. Due to this, the domain was sold out from under me. I have set up www.thedesignatedgeek.net with all the old stuff. I will be working hard the next month to bring it all up to date. | One note before we go for this month. You might have noticed that I've missed a couple of issues. This is due to my wife being diagnosed with cancer last year. As hard as I have tried to keep things from falling through the cracks, a number of things have. One of these things is my old domain/web site at www.thedesignatedgeek.com. I blew it and missed the renewal. Due to this, the domain was sold out from under me. I have set up www.thedesignatedgeek.net with all the old stuff. I will be working hard the next month to bring it all up to date. | ||
See you next time. | See you next time. | ||
+ | ** | ||
+ | |||
+ | Une note avant de terminer pour ce mois-ci. Vous avez sans doute remarqué que j'ai manqué quelques numéros. Cela est dû au fait que ma femme a été diagnostiquée avec un cancer l'an dernier. Même si j'ai vraiment essayé d' | ||
+ | |||
+ | Rendez-vous la prochaine fois. |
issue58/tuto_python.1331746516.txt.gz · Dernière modification : 2012/03/14 18:35 de frangi