Python et QT (tutoriel 4)
Dans le tutoriel précédent, j’ai détaillé les fonctionnalités de l’application que nous allons commencer à réaliser.
Éléments abordés dans ce document
Au travail
Explications des lignes du fichier myreadfile.py
2 lignes à mettre en tête des fichiers python
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
Création des 4 items correspondant aux opérations
items=[]
items.append(QListViewItem(f.ExerciseListView,"Additions"))
items.append(QListViewItem(f.ExerciseListView,"Divisions"))
items.append(QListViewItem(f.ExerciseListView,"Multiplications"))
items.append(QListViewItem(f.ExerciseListView,"Soustractions"))
Lecture du fichier exercices.txt. On stocke les lignes du fichier dans la liste dataLines en éliminant les lignes de commentaire.
try:
fsock = open('exercices.txt')
try:
dataLines = [line for line in fsock.readlines() if line[0]!='#']
finally:
fsock.close()
except IOError:
pass
Les expressions régulières permettent d’isoler chaque élément d’une ligne du fichier. L’affectation multiple permet d’initialiser les variables en une seule opération.
On ajoute les valeurs extraites de dataline dans l’ items[] correspondant à l’opération. On récupère l’indice de l’opérateur grâce à la liste des opérateurs et la fonction index(). Il faut utiliser unicode() pour convertir les données lues du fichier en utf8.
for dataLine in dataLines:
exercice, oorq, delai, question = re.findall("^([^\\t]+)\\t+([^\\t]+)\\t+(\\d+)\\t+(\\d+)",dataLine)[0]
op1Min, op1Max, q1, operateur, op2Min, op2Max, q2, max, q3 = re.findall("^\\[([0-9]{1,3})..([0-9]{1,3})\\](_?)([+\\-*/])\\[([0-9]{1,3})..([0-9]{1,3})\\](_?)<=([0-9]{1,3})(_?)$", oorq)[0]
items.append(QListViewItem(items[['+', '/', '*', '-'].index(operateur)], unicode(exercice,'utf8'), oorq, delai, question))
Il ne reste plus qu’à lancer
pyuic formreadfile.ui > formreadfile.py
python myreadfile.py
pour obtenir

- Visualiser les exercices

- Le fichier exercices.txt
- Celui-ci contient une série d’exercices. Les lignes commencant par # sont des commentaires. Ceux-ci sont notamment utilisés pour décrire le format du fichier.
Historique des modifications
| Version | Date | Commentaire |
|---|---|---|
| 0.1 | 19/03/2006 | Création par Jibux |
| 0.2 | 26/11/2006 | Ajout d’un lien vers l’article suivant |
| Fichier attaché | Taille |
|---|---|
| editListview.png | 21.42 Ko |
| Le fichier exercices.txt | 1.99 Ko |
| Le formulaire | 671 octets |
| Visualiser les exercices | 16.7 Ko |
| Le fichier myreadfile.py | 752 octets |


Commentaires
> Python et QT (tutoriel 4)
RAS pour le fond. Nickel pour moi.
J’ai juste trouvé une seule coquille dans le tout premier paragraphe :