Salut à tous,

La seule chose que je maîtrisais jusqu'à présent était Tkinter, mais je l'avoue celui-ci n'est pas très esthétique .

J'ai pu faire quelques essais de pyQt (pour l'instant Qt3) avec QT Designer, puis en rajoutant une fonction avec boucle pour mettre en action une barre de progression . J'aime vraiment QT Designer et je trouve la syntaxe PyQt pas aussi compliquée que ce que je m'imaginais . Voilà ce que j'ai pu obtenir :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# -*- coding: utf-8 -*-
 
# Form implementation generated from reading ui file 'activerProgressBar.ui'
#
# Created: jeu sep 20 01:28:41 2007
#      by: The PyQt User Interface Compiler (pyuic) 3.17
#
# WARNING! All changes made in this file will be lost!
 
 
'''
Generer le *.py a partir du fichier .ui de QT Designer :
pyuic -x activerProgressBar.ui -o activerProgressBar.py
'''
 
 
import sys
from qt import *
 
 
class activerProgressBar(QDialog):
    def __init__(self,parent = None,name = None,modal = 0,fl = 0):
        QDialog.__init__(self,parent,name,modal,fl)
 
        if not name:
            self.setName("activerProgressBar")
 
        self.setSizeGripEnabled(1)
 
 
        LayoutWidget = QWidget(self,"Layout1")
        LayoutWidget.setGeometry(QRect(10,40,490,33))
        Layout1 = QHBoxLayout(LayoutWidget,0,6,"Layout1")
 
        self.boutActiverProgresseBar = QPushButton(LayoutWidget,"ActiverProgresseBar")
        self.boutActiverProgresseBar.setAutoDefault(1)
        self.boutActiverProgresseBar.setDefault(1)
        Layout1.addWidget(self.boutActiverProgresseBar)
 
        self.Fermer = QPushButton(LayoutWidget,"Fermer")
        self.Fermer.setAutoDefault(1)
        Layout1.addWidget(self.Fermer)
 
        self.progressBar1 = QProgressBar(self,"progressBar1")
        self.progressBar1.setGeometry(QRect(10,110,491,25))
 
        self.languageChange()
 
        self.resize(QSize(511,182).expandedTo(self.minimumSizeHint()))
        self.clearWState(Qt.WState_Polished)
 
        self.connect(self.boutActiverProgresseBar,SIGNAL("clicked()"),self.foncBoucleBarre)
        self.connect(self.Fermer,SIGNAL("clicked()"),self.close)
 
 
    def languageChange(self):
        self.setCaption(self.__tr("MyDialog"))
        self.boutActiverProgresseBar.setText(self.__tr("&Activer ProgressBar"))
        self.boutActiverProgresseBar.setAccel(QKeySequence(self.__tr("Alt+A")))
        self.Fermer.setText(self.__tr("&Fermer"))
        self.Fermer.setAccel(QKeySequence(self.__tr("Alt+F")))
 
 
    def __tr(self,s,c = None):
        return qApp.translate("activerProgressBar",s,c)
 
 
    # Fonction perso rajoutee (activation 
    # de la barre de progression) .
    def foncBoucleBarre(self) :
 
	l=[y for y in range(81278)]
 
	compt=1
 
	for parc in range(len(l)) :
 
		print parc
 
		# --------------------------------------------
		# La barre de progression fait bien son boulot
		self.progressBar1.setProgress(compt)
 
		self.progressBar1.setTotalSteps(len(l))
 
		compt=compt+1
		# --------------------------------------------
 
	#self.progressBar1.setProgress(100)
	# Remise a l'etat de depart de la barre
	self.progressBar1.reset()
 
 
if __name__ == "__main__":
    a = QApplication(sys.argv)
    QObject.connect(a,SIGNAL("lastWindowClosed()"),a,SLOT("quit()"))
    w = activerProgressBar()
    a.setMainWidget(w)
    w.show()
    a.exec_loop()
J'avoue que je ne connais pas bien la gestion des classes ... .

Ce que je voudrais faire ici (mais aussi dans d'autres exemples qui viendront plus tard) c'est séparer l'interface et le reste, c'est à dire ici que la fonction foncBoucleBarre ne fasse plus partie de la classe activerProgressBar, mais soit par exemple dans une autre classe ou par une fonction séparée de cette classe activerProgressBar (et que tout fonctionne parfaitement évidemment), pouvez-vous m'aider svp ? . Excusez-moi je suis un gros naze dans la gestion des classes .

Existe-t-il des documentations sur PyQt (en français et présentant avec des images une grande quantité de widgets ... et la syntaxe associée ...) ? .

Que pensez-vous de ce bouquin : http://www.amazon.fr/Rapid-Gui-Progr.../dp/0132354187

(il est en anglais, je pense que je peux comprendre un peu quand même) ? . Est-il didactique, bien imagé ? ... . Existe-t-il des livres en français traitant de PyQt et QT Designer ? .

Je reviendrais avec d'autres questions un peu plus tard ... .

a+