Python et QT (tutoriel 5)
Dans le tutoriel précédent, j’ai détaillé la création d’une QListView utilisée pour lire le fichier d’exercices. Nous allons intégrer ces fonctions dans le formulaire présenté dans le tutoriel 3.
Éléments abordés dans ce document
Au travail
Dans l’IDE Eric (il est important de l’avoir installé et configuré comme indiqué ici
# !/usr/bin/env python
import sys
from qt import *
from mainform_impl import MainForm_Impl
# create Qt application
app = QApplication(sys.argv)
# create and show Qt form
form = MainForm_Impl()
form.show()
# enter Qt event-handling loop
app.exec_loop()
Il serait vraiment dommage de s’arrêter en si bon chemin. On va donc ajouter le code correspondant à la lecture du fichier d’exercices vu dans le tutoriel précédent. Celui-ci prendra tout naturellement place dans la fonction init() du fichier MainForm_Impl.py
def init(self):
items=[]
items.append(QListViewItem(self.ExerciseListView,"Additions"))
items.append(QListViewItem(self.ExerciseListView,"Divisions"))
items.append(QListViewItem(self.ExerciseListView,"Multiplications"))
items.append(QListViewItem(self.ExerciseListView,"Soustractions"))
try:
fsock = open('exercices.txt')
try:
dataLines = [line for line in fsock.readlines() if line[0]!='#']
finally:
fsock.close()
except IOError:
pass
try:
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))
except NameError:
pass
En fait il suffit de rajouter le code suivant dans la fonction SelectExerciseSlot
def SelectExerciseSlot(self):
exercise=self.ExerciseListView.currentItem().text(1).ascii()
if exercise:
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})(_?)$", exercise)[0]
self.MinOp1LineEdit.setText(op1Min)
self.MaxOp1LineEdit.setText(op1Max)
self.OperateurComboBox.setCurrentItem(['*', '+', '-', '/'].index(operateur))
self.MinOp2LineEdit.setText(op2Min)
self.MaxOp2LineEdit.setText(op2Max)
self.ResultatMaxLineEdit.setText(max)
self.PositionLineEdit.setText(`(q1=='_')+(q2=='_')*2+(q3=='_')*4`)
self.CountLineEdit.setText(self.ExerciseListView.currentItem().text(3).ascii())
self.DelaiLineEdit.setText(self.ExerciseListView.currentItem().text(2).ascii())
else:
operateur=self.ExerciseListView.currentItem().text(0).ascii()
self.OperateurComboBox.setCurrentItem(['Multiplications', 'Additions', 'Soustractions', 'Divisions'].index(operateur))
Tous les fichiers de ce tutoriel sont dans l’archive suivante :
Liens
Installer Python-Qt3 / QtDesigner sur Ubuntu Breezy 5.10
Programmer en PyQt avec Eric3 / QtDesigner
Historique des modifications
| Version | Date | Commentaire |
|---|---|---|
| 0.1 | 26/03/2006 | Création par Jibux |
| 0.2 | 26/11/2006 | Ajout d’un lien vers l’article suivant |
| Fichier attaché | Taille |
|---|---|
| revcal-2.jpg | 49.13 Ko |
| revcal.zip | 43.94 Ko |

