PyQt5
Développez vos interfaces graphiques en Python
Édition ENI
Chapitre 1
Introduction et présentation de PyQt
1. Présentation générale11
1.1 Introduction11
1.2 Présentation de Qt12
1.3 Usage de Qt avec un autre langage que C++13
1.4 Première approche de PyQt13
1.5 Logiciels connexes à PyQt14
1.6 Qui utilise PyQt ?14
1.7 La question de la documentation de PyQt15
2. Installation de PyQt15
2.1 Introduction15
2.2 Installation de PyQt16
2.3 Installation de Qt Designer16
3. Premier exemple en PyQt17
3.1 Introduction17
3.2 Un programme « Hello world »18
3.3 Un programme « Hello world » plus évolué20
4. Conclusion du Chapitre 21
Chapitre 2
Inventaires des widgets PyQt
1. Introduction23
2. Inventaire des widgets PyQt24
2.1 Widget QWidget24
2.1.1 Propriétés et méthodes de classes24
2.1.2 Les fenêtres QWidget de niveau supérieur30
2.1.3 Les principales propriétés de QWidget30
2.2 Widget QLabel35
2.2.1 Introduction35
2.2.2 Exemple d'utilisation36
2.3 Widget QLineEdit38
2.3.1 Introduction38
2.3.2 Exemple d'utilisation39
2.4 Widget QPushButton40
2.4.1 Introduction40
2.4.2 Utilisation41
2.5 Widget QComboBox45
2.5.1 Introduction45
2.5.2 Utilisation45
2.6 Widget QSpinBox48
2.6.1 Introduction48
2.6.2 Exemple d'utilisation49
2.7 Widget QDateTimeEdit51
2.7.1 Introduction51
2.7.2 Utilisation51
2.7.3 Un mot au sujet de QDate et de QTime52
2.8 Widget QProgressBar53
2.8.1 Introduction53
2.8.2 Exemple d'utilisation54
2.9 Widget QTextEdit56
2.9.1 Introduction56
2.9.2 Exemple d'utilisation56
2.9.3 Un mot sur le widget QPlainTextEdit59
Chapitre 3
La disposition en PyQt
1. Introduction61
2. Inventaire des widgets de disposition en PyQt62
2.1 QHBoxLayout et QVBoxLayout62
2.1.1 Introduction62
2.1.2 Premier exemple avec QVBoxLayout62
2.1.3 Transposition de l'exemple avec QHBoxLayout64
2.2 QGridLayout65
2.2.1 Introduction65
2.2.2 Exemple d'utilisation65
2.2.3 Plus loin avec la fonction addWidget67
2.3 QFormLayout69
2.3.1 Introduction69
2.3.2 Exemple d'utilisation70
2.4 QTabWidget71
2.4.1 Introduction71
2.4.2 Exemple d'utilisation72
2.5 QGroupBox75
2.5.1 Introduction75
2.5.2 Exemple d'utilisation75
2.6 QToolBar78
2.6.1 Introduction78
2.6.2 Exemple d'utilisation78
Chapitre 4
Gestion des évènements en PyQt
1. La gestion d'évènements en PyQt81
1.1 Propos introductif81
1.2 Premier exemple : signaux et slots82
2. Plus loin dans la gestion d'évènements85
2.1 La transmission de données85
2.2 Les limitations issues de C+ +88
2.3 Développer sa propre gestion d'évènements88
2.3.1 Introduction88
2.3.2 Utilisation de pyqtSignal88
2.3.3 Exemple de gestion personnalisée des évènements89
2.3.4 Fonctions et décorateurs91
2.4 Passage de paramètres supplémentaires à des slots93
2.4.1 Introduction93
2.4.2 Utilisation du mot-clé lambda93
2.4.3 Utilisation de partial94
Chapitre 5
Modèle-Vue-Contrôleur (MVC) et PyQt
1. Introduction97
2. Le Modèle-Vue-Contrôleur (MVC)98
2.1 Introduction98
2.2 .L'esprit du paradigme MVC98
3. Développement d'une application de calculatrice100
3.1 Introduction100
3.2 Analyse, architecture et codage100
3.2.1 Développement de la vue100
3.2.2 Le modèle103
3.2.3 Développement du contrôleur104
3.3 Le code global de la calculatrice106
3.4 Apparence écran LCD110
4. Développement d'une application Notepad111
4.1 Introduction111
4.2 Programmation de l'application113
4.3 Code global de l'application Notepad118
5. Développement d'une application d'éditeur de texte enrichi122
5.1 Introduction122
5.2 Programmation de l'application123
5.3 Code global de l'application d'édition de texte enrichi130
6. Conclusion du Chapitre 134
Chapitre 6
Gestion des styles et des apparences en PyQt
1. Introduction135
2. Manipuler les polices, l'objet QFont137
2.1 Utiliser l'objet QFont137
2.2 La question des polices de caractères non installées142
3. Manipuler les images en PyQt145
3.1 Utilisation de QPixmap pour les images145
3.2 Plus loin avec QPixmap pour les images149
3.2.1 L'insertion dans un Qlabel avec du texte149
3.2.2 Modifier les dimensions de l'image après insertion ....150
4. Manipuler les icônes en PyQt150
4.1 Introduction150
4.2 Exemple d'utilisation150
5. Les fichiers de ressources en PyQt153
5.1 Introduction153
5.2 Ressources et PyQt153
6. L'usage de QPalette en PyQt159
6.1 Introduction159
6.2 Utilisation de QPalette159
7. L'usage de QBrush en PyQt162
7.1 Introduction162
7.2 Utilisation de QBrush163
8. La gestion des styles en PyQt165
8.1 Introduction165
8.2 Première utilisation de QSS166
8.3 Plus loin avec QSS169
8.3.1 Enrichissement de l'exemple169
8.3.2 Des valorisations plus fines172
8.3.3 Le préfixe # en QSS175
8.3.4 Le préfixe « . » en QSS175
9. Conclusion du Chapitre 179
Chapitre 7
Les animations en PyQt
1. Introduction181
2. Des animations simples en PyQt182
2.1 Introduction182
2.2 Une première animation géométrique184
2.3 Les limites de l'usage de QPropertyAnimation186
2.4 Couleurs et animation en PyQt187
3. Animation plus élaborée avec QPropertyAnimation190
3.1 Introduction190
3.2 Animations et courbe de Bézier190
4. Notion de scène graphique en PyQt195
4.1 Introduction195
4.2 Exemple d'utilisation195
Chapitre 8
Gestion et usage des bases de données en PyQt
1. Introduction199
1.1 Les bases de données relationnelles199
1.2 Le système de base de données SQLite200
2. Exemple détaillé avec SQLite200
2.1 Création de la base de données200
2.2 Connexion à la base de données208
2.3 Première insertion de données dans la base de données209
2.4 Insertion des autres données dans la base de données213
2.5 Modification de données existantes dans la base de données .216
2.6 Exemple de requête utilisant une jointure217
2.7 Requête préparée en PyQt218
2.7.1 La méthode par substitution des critères219
2.7.2 La méthode par requête préparée220
3. Plus loin avec l'utilisation de QSqlTableModel221
3.1 Introduction221
3.2 Exemple d'utilisation221
4. L'utilisation de QSqlRelationalTableModel225
4.1 Introduction225
4.2 Exemple d'utilisation225
5. Le mapping de données avec QDataWidgetMapper228
5.1 Introduction228
5.2 Exemple d'utilisation229
Chapitre 9
Son et vidéo avec PyQt
1. Introduction233
2. Le son dans PyQt234
2.1 Jouer un simple son234
2.2 Lire ou enregistrer un son236
2.2.1 Introduction236
2.2.2 Vérification de la présence d'un micro237
2.2.3 Développement de l'application238
3. La vidéo dans PyQt247
3.1 Introduction247
3.2 Application de capture d'image depuis un flux vidéo248
3.2.1 Vérification de la présence d'une caméra248
3.2.2 Développement de l'application249
Chapitre 10
Réseaux et gestion des couches basses
1. Introduction255
2. PyQt et les sockets256
2.1 Introduction256
2.2 Adressage IP257
2.3 Protocoles de transmission TCP et UDP259
2.4 Réalisation d'une messagerie instantanée locale basée sur UDP260
2.4.1 Introduction260
2.4.2 Développement de la messagerie UDP261
2.5 Réalisation d'une messagerie instantanée locale basée sur TCP267
2.5.1 Introduction267
2.5.2 Développement de la messagerie TCP268
3. PyQt et les requêtes HTTP275
3.1 Introduction275
3.2 Exemples sur la thématique PyQt et HTTP276
3.2.1 Récupérer le contenu d'une page web276
3.2.2 Une requête POST en PyQt278
Chapitre 11
Le mulîithreading en PyQt et sujets assimilés
1. Introduction283
2. Utilisation de la classe QTimer285
2.1 Introduction285
2.2 Développement utilisant QTimer285
3. Le multithreading en PyQt289
3.1 Introduction289
3.2 Mise en évidence de l'utilisation de QThread290
3.3 Exemple avancé avec QThread295
4. Pool de threads en PyQt302
4.1 Introduction302
4.2 Petit exemple d'utilisation de QThreadPool302
Chapitre 12
Usages étendus de PyQt
1. Introduction305
2. Diagrammes de données en PyQt306
2.1 Introduction306
2.2 Exemple de diagramme en PyQt : le pourcentage CPU307
3. Web browsing en PyQt313
3.1 Introduction313
3.2 Développement d'un navigateur web313
4. Modélisation 3D en PyQt318
4.1 Introduction318
4.2 Modélisation 3D en PyQt318
4.3 Exemple d'application avec OpenGL en PyQt320
Index327