La programmation événementielle avec les modules Tkinter et wx du langage python

La programmation événementielle avec les modules Tkinter et wx du langage python

saisie Mémento aide

Cette page contient des titres, que vous pouvez parcourir, avec Jaws, grâce au raccourci "insert+F6" puis "flèche bas".

Si vous consultez cette page pour la première fois, allez directement au titre "Comment travailler..." Sinon, vous pouvez aussi aller directement aux exercices de votre choix, en utilisant les liens sur la même page suivants :

Liens avec les exercices sur la même page

Exercice 1 : construire un clavier sonore pour Windows, avec les instructions du module tkinter du langage python

Exercice 2 : construire une application pour Windows, avec une fenêtre d'édition et une barre de menu, en utilisant les instructions du module wx du langage python

Exercice 3 : construire une application qui utilise le module wx du langage python, pour un clavier sonore

Comment travailler les exercices de cette page

Vous pouvez utiliser le lien "saisir", dans lequel vous taperez les mots clefs du langage, que je vous signale (entre guillemets) dans les exercices. J'ai placé dans les dictionnaires python.txt et pythonaide.txt de ce cours, des explications sommaires sur les instructions principales du langage. Vous pouvez copier et coller ces mots clefs (sans les guillemets) dans la fenêtre d'édition du lien "saisie" Si vous êtes aveugle, vous pouvez réaliser cette opération sans la souris, avec des raccourcis comme ci-dessous.

placez vous au début d'une donnée avec les flèches de direction, puis quand Jaws vous lit une donnée que vous désirez saisir, faites les raccourcis suivants : "maj+flèche droite" pour sélectionner le caractère courant...puis "ctrl+c" pour copier les caractères sélectionnés dans le presse-papier, puis"ctrl+page up" pour revenir en haut de la page, puis "tab" puis "entrée" pour ouvrir le lien "saisie", puis "entrée" pour activer le champ d'édition (si vous avez Jaws) "ctrl+v" puis "entrée", pour coller le contenu du presse-papier dans le champ d'édition. Ces actions auront permis de saisir la ligne de donnée, sans avoir besoin de la taper, et vous pourrez, s'il y a lieu, lire le résultat courant, avec la commande mmathweb0. En effet, vous vous retrouverez dans la page résultat, dans laquelle se trouve en plus du résultat courant, des liens avec des exécutables comme mathweb0... Le lien "exécuter le résultat courant..." donne parfois l'exécution du résultat précédent, et dans ce cas, vous l'activerez une nouvelle fois, pour exécuter le résultat courant.

Dans le texte, vous trouverez des lignes de données, qui commencent par un symbole spécial, comme #, :, $, ou £... Vous pouvez changer ce symbole par un autre, pour vous aider dans votre étude. En plus des données que vous saisirez par le mécanisme du copier/coller, vous pourrez, bien sûr, taper des données de votre choix. Vous reviendrez dans cette page en faisant une ou plusieurs fois, le raccourci "alt+flèche gauche"

Exemples de scripts en programmation événementielle pour Windows

Exercice 1 : construction d'un clavier sonore pour Windows

Pour pouvoir exécuter les programmes des exemples, vous devez copier les sources .py dans le répertoire c:\python24 ou c:\python25, suivant l'installation que vous avez faite pour la version 2.4 ou 2.5 de python.

Clavier.py : source .py pour un clavier sonore

Si vous avez lu la source clavier.py, vous aurez remarqué les instructions :

>>>from lireasync import lireasync

>>>from chiffre import *

>>>from decoder import decoder

lireasync.py : source du module de lecture sonore

la fonction lireasync(phr, ivit) sert pour lire une chaîne phr, avec les sources sonores .wav de studyvox

chiffre.py : module pour le traitement des formules

le module chiffre.py contient la fonction normaliser(phr) qui prépare la chaîne phr, pour la lecture sonore des formules, avec la fonction lireasync(phr, ivit) (écriture des nombres en toutes lettres, traitement des symboles ASCII...)

decoder.py : module pour décoder les événements envoyés à partir du clavier

Le module decoder.py contient la fonction decoder(touche) qui renvoie le code ASCII de l'événement key envoyé à partir du clavier.

Si vous voulez exécuter la procédure clavier.bat ci-dessous, vous devez copier les 4 scripts .py précédents dans votre répertoire python24 ou python25 (et avoir installé les sources sonores de studyvox)

clavier.bat : procédure pour l'exécution du clavier sonore clavier.py (pour la version 2.4)

clavier25.bat : procédure pour l'exécution du clavier sonore clavier.py (pour la version 2.5)

Exercice 2 : construire une application sdi pour Windows (Simple Document Interface) avec les instructions du module wx du langage python

Nous allons utiliser le module wx, qui contient tout ce qu'il faut pour créer une fenêtre d'édition, avec un menu...

Vous devrez installer le module wxpython, car il n'est pas installé par défaut. Voici le code de window.py :

window.py : lisez le code d'une application sdi en langage python avec le module wx

J'ai inclus dans window.py, la fonction lireasync, pour la lecture sonore des .wav du répertoire c:\sv3\wav Le lien ci-dessous vous permet d'exécuter window.py avec la version 2.5 de python :

window25.bat : procédure pour l'exécution du petit éditeur window.py (pour la version 2.5 de python)

Si vous avez consulté la source window.py, vous aurez constaté que les instruction qui utilisent les classes du module wx, sont assez différentes de celles du module tkinter.

Exercice 3 : clavier sonore avec les instructions du module wx du langage python

Le script frame.py donne un exemple de fenêtre, programmé avec les instructions du module wx, qui traite les événements wx.EVT_CHAR :

frame.py : clavier sonore avec le module wx du langage python

Si vous avez consulté le script frame.py, vous aurez remarqué les instructions :

from lireasync import lireasync

import wx

Le module lireasync.py est un module personnel qui contient la fonction de lecture sonore lireasync(ficwav,ivit)

Pour pouvoir exécuter correctement le script frame.py, vous devez le copier dans votre répertoire python24 ou python25, ainsi que lireasync.py (voir plus haut les outils sonores de studyvox) Vous devez aussi avoir installé le module wx dans votre environnement python. Après ces installation, vous pouvez exécuter ce script en utilisant :

frame.bat : exécution du script frame.py (avec la version python24

frame25.bat : exécution du script frame.py (avec la version python25

Le script frame.py construit un cadre (vide) et intercepte tous les événement qui correspondent à EVT_CHAR (touches préssées au clavier)

Pour chaque touche, on associe la fonction On_Char, au moyen de la méthode frame.bind(...) qui lit oralement le fichier .wav de chemin c:\sv3\studyvox\num.wav, où num est le code ASCII du caractère enfoncé. Comme on connaît les code ISO des touches enfoncées, on utilise la fonction asciiiso, pour trouver le code ASCII, donc le num.wav qui contient l'écho sonore de la touche.

Nous n'avons pas créé de menu dans l'application frame.py, pour bien montrer, comment utiliser la méthode bind, et ne pas perdre le lecteur par d'autres considérations.

Pour apprendre pas à pas comment créer une fenêtre avec des contrôles, comme des menus, des boutons...(encore appelés widgets) vous consulterez le lien très clair suivant, dans lequel il est fait un parallèle entre les instructions de tkinter et celles de wx

Lien externe : programmation de fenêtres avec Tkinter et wxpython, exemple pas à pas

La programmation évenementielle pour Windows n'est pas évidente, car il faut, en particulier, bien comprendre comment traiter les messages envoyés à l'application (actions des touches du clavier, de la souris...) Il y a peu de documentation complète en français sur les instructions du module wx, qui est encore en évolution en avril 2007. Pour une description complète en anglais, vous consulterez :

Vous trouverez de nombreuses autres ressources et exemples d'applications du langage python, dans la page de liens externes utiles :

suivant : liens utiles pour le cours sur le langage python

Retour dans le sommaire de ce cours sur le langage python

Retour dans la page sommaire de la rubrique langage