coagul : Python et QT (tutoriel 6)

Créé par Jean-Emmanuel Bissey le 07/11/2025 modifié le 08/11/2025 Publié

Rubrique : Programmation

Le : mardi 4 avril 2006

Par : jibux 

Visites : 2567

Tags : Python, QT

Dans le tutoriel précédent, nous avons fait la connaissance de l’IDE Eric. Nous allons l’utiliser pour créer une petite application qui affichera une barre de progression qui diminuera au rythme d’un timer.

Éléments abordés dans ce document

- Les timers « avec QTimer(), start(), stop(), isActive() »

- Les barres de progression « avec setTotalSteps(), setProgress(), progress() »

Au travail

Maintenant que vous connaissez Eric et QT designer vous devriez pouvoir créer ceci

Liste de commandes à utiliser (pour mémoire)

Dans eric

- Menu : project / new pour créer un nouveau projet nommé timer

- Dans l’onglet QT designer : clic droit / New form ... puis dialog pour créer une nouvelle boite de dialogue nommée timer

Dans QT Designer

- Placer une ProgressBar au milieu de la boite de dialogue

- Enregistrer

Dans eric

- Clic droit sur timer.ui dans l’onglet Forms : Compile form

- Clic droit sur timer.ui dans l’onglet Forms : Generate subclass nommée Form_Impl

- Enregistrer le fichier en le nommant mytimer.py

- Clic droit dans l’onglet Sources : Add source file ... mytimer.py

- Menu : project / propriétés, choisir mytimer.py comme script principal.

- Ajouter modifier le code mytimer.py comme suit :


#!/usr/bin/env python

# -*- coding: utf-8 -*-

import sys

from qt import *

from timer import Form

class Form_Impl(Form):

  def __init__(self,parent = None,name = None,modal = 0,fl = 0):

    Form.__init__(self,parent,name,modal,fl)

    

    self.progressBar1.setTotalSteps(10)

    self.progressBar1.setProgress(10)

    

    self.timer=QTimer(self)

    self.connect(self.timer, SIGNAL('timeout()'), self.timerTimeOutSlot)

    self.timer.start(1000)

  def timerTimeOutSlot(self):

    p=self.progressBar1.progress()

    if p>0:

      self.progressBar1.setProgress(p-1)

    else:

      if self.timer.isActive():

        self.timer.stop()

app = QApplication(sys.argv)

QObject.connect(app,SIGNAL("lastWindowClosed()"),app,SLOT("quit()"))

form = Form_Impl()

form.show()

app.exec_loop()

Il ne reste plus qu’à lancer le script avec F2 pour obtenir :

Pour la suite, c’est ici

Historique des modifications

Version Date Commentaire

0.1 03/04/2006 Création par Jibux

0.2 14/04/2006 Ajout traitement du signal lastWindowClosed()

0.3 26/11/2006 Ajout d’un lien vers l’article suivant

Galerie