Applications multiplateformes avec Python, PyQT et QT Desginer 5

Table des matières
Python est un langage de programmation auquel le caractéristique d'être multiparadigme car permet de programmer avec un paradigme orienté objet et fonctionnel, possède une bibliothèque standardisée.
Il existe de nombreux outils et bibliothèques Python pour développer des logiciels et des applications Web. Dans le cas de la conception d'écrans, nous pouvons utiliser diverses bibliothèques telles que wxPython, PyQt, PySide ou alors PyGTK pour dessiner notre interface puis programmer, il existe aussi des frameworks web comme Django, dans ce tutoriel nous allons voir comment créer des applications bureautiques multiplateformes en utilisant PyQT 5.

PyQt5 c'est une bibliothèque d'outils Python pour lui Cadre QT5. Il est disponible pour Python 3.x.
PyQt5 est implémenté comme un ensemble de modules Python. Il nous permet de lier les conceptions que nous réalisons avec QT Designer et ensuite de pouvoir les traduire avec Py Qt afin qu'elles soient exécutables sous Python dans tous les systèmes d'exploitation tels que Linux Windows et Mac OS.
Afin de développer des applications, nous devons installer les programmes et dépendances nécessaires.Ce tutoriel utilisera une version de Linux Mint comme système d'exploitation, mais il peut être adapté à n'importe quel système d'exploitation.
Dans d'autres tutoriels, nous utilisons Qt pour programmer en C ++, la programmation multiplateforme en C ++ et Qt sous l'environnement GNU / Linux et la programmation QT et les bases de données SQLite.
Commençons par installer QT Designer 5, à partir d'une fenêtre de terminal, nous le téléchargeons et l'installons
 $ wget http://download.qt-project.org/official_releases/qt/5.3/5.3.0/qt-Abrirsource-linux-x64-5.3.0.run $ chmod + x qt-Abrirsource-linux-x64-5.3 .0.run $ sudo ./qt-Abrirsource-linux-x64-5.3.0.run
Ensuite, nous devons installer les bibliothèques de développement Python :
 sudo apt-get install pyqt5-dev-tools
Ensuite, nous devons installer une extension Python appelée SIP qui est un générateur de code spécialement conçu pour créer du code Python. Cela permettra au fichier de conception Qt Designer d'être lu et traduit en code Python. Le code généré peut être compilé pour Python v2 et v3.
Nous téléchargeons SIP sur le site officiel, puis nous allons dans le dossier où nous l'avons téléchargé, décompressons le fichier sip-4.17.tar.gz, accédons au dossier et configurons SIP et installons avec le code suivant à partir de la fenêtre du terminal.
 python configure.py make make install
Nous définissons QT5 comme version par défaut :
 sudo apt-get install qt5-default
Enfin, nous téléchargeons et installons PyQt qui sont les bibliothèques dont nous aurons besoin pour lier Python et QT Designer
Téléchargez PyQt depuis son site officiel, puis nous allons dans le dossier où nous l'avons téléchargé, décompressez le fichier PyQt et accédez au dossier et configurez-le avec le code suivant à partir de la fenêtre du terminal.
 python configure.py
Nous allons créer une application simple à partir de Qt designer nous allons faire le design en prenant un formulaire, nous ne nous intéresserons qu'au fichier avec l'extension ui qui sera l'interface de conception. Notre projet s'appelle Dialoga.

Ensuite, nous sélectionnerons le type de fenêtre que notre application utilisera, dans ce cas, nous utiliserons une boîte de dialogue avec deux boutons comme modèle.

Ensuite, nous aurons l'écran avec notre fenêtre à concevoir, nous ajoutons un TextEdit et sauvegardons le fichier

Ensuite, nous allons dans le dossier des projets, les fichiers c++ correspondants auront également été générés mais nous n'utiliserons que le fichier ui.
Ensuite, depuis le terminal, nous devrons traduire le fichier dialoga.ui en python, depuis la fenêtre du terminal, nous utilisons la commande suivante :
 pyuic5 -o dialoga.py dialoga.ui

Cela génère le fichier dialog.py qui est la conception que nous avions en c++ maintenant disponible en Python, le code est le suivant
 # - * - codage : utf-8 - * - # Implémentation du formulaire générée à partir de la lecture du fichier ui 'dialoga.ui' # # Créé : Lun 26 octobre 21:31:56 2015 # par : PyQt5 Générateur de code UI 5.2.1 de PyQt5 import QtCore, QtGui, QtWidgets classe Ui_DialogA (objet): def setupUi (self, DialogA): DialogA.setObjectName ("DialogA") DialogA.resize (400, 300) self.buttonBox = QtWidgets.QDialogButtonBox (DialogA) self.buttonBox ( DialogA) self.setGeometry (QtCore.QRect (30, 240, 341, 32)) self.buttonBox.setOrientation (QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons (QtWidgets.QDialogButtonBox.Cancel | QtWidgets.QOlogtonBsetDsetOsetOsetDialogtonBsetOsetOset . ("buttonBox") self.textEdit = QtWidgets.QTextEdit (DialogA) self.textEdit.setGeometry (QtCore.QRect (20, 20, 361, 201)) self.textEdit.setObjectName ("textEdit") self.retranslateUi (DialogA ) self.buttonBox.accepted.connect (DialogA.accept) self.buttonBox.rejected.connect (DialogA.reject) QtCore.QMetaObject.connectSlotsByName (DialogA) def retranslateUi (self, DialogA): _translate = QtCore.QCoreAp plication.translate DialogA.setWindowTitle (_translate ("DialogA", "Dialog"))
C'est tout ce que nous concevons dans Qt Designer, maintenant nous devons le lier à un code qui l'utilise, pour cela nous allons créer un fichier startup.py et écrire le code suivant :
 importer sys de PyQt5.QtWidgets importer QApplication, QDialog de dialoga importer * app = QApplication (sys.argv) window = QDialog () ui = Ui_DialogA () ui.setupUi (window) window.show () sys.exit (app.exec_ ())
Nous voyons que nous importons les bibliothèques d'affichage graphique et importons le fichier de dialogue avec le design.
Ensuite, nous indiquons que la fenêtre sera une boîte de dialogue, la conception de la fenêtre ui sera définie dans la classe Ui_DialogA () définie dans le fichier de conception et enfin cette conception est affectée à la fenêtre via la fonction setupUi.
Nous sauvegardons et exécutons à partir de la fenêtre de commande comme suit :
 python3 home.py

Nous allons créer ci-dessous un éditeur de texte simple mais fonctionnel. Nous allons créer un nouveau projet où nous sommes intéressés par la création des interfaces graphiques. Nous appellerons le projet MyEditor.

Nous sélectionnons ensuite MainWindow comme modèle. Dans la conception, nous pouvons avoir un menu et un textedit. Ici, il sera important de donner un nom à chaque objet afin qu'il puisse être identifié plus tard et référencé à partir du code Python. Ensuite, nous l'enregistrons et convertissons le fichier ui en python.
Nous effectuons la conversion à partir de la fenêtre du terminal avec la commande suivante :
 pyuic5 -o mieditor.py mieditor.ui
Le code de conception en python sera le suivant :
 # - * - codage : utf-8 - * - # Implémentation du formulaire généré à partir de la lecture du fichier ui '/testqt/mieditor.ui' # # Créé : Lun 26 octobre 10:32:56 2015 # par : PyQt5 Générateur de code UI 5.2. 1 # # ATTENTION ! Toutes les modifications apportées dans ce fichier seront perdues! de PyQt5 import QtCore, QMainWindow, QApplication, QtGui, QtWidgets class Ui_MainWindow (objet): def setupUi (self, MainWindow): MainWindow.setObjectName ("MainWindow") MainWindow.resize (533, 317) self.centralwidget (Qt.Gui.QtGui MainWindow) self.centralwidget.setObjectName ("centralwidget") self.gridLayout = QtGui.QGridLayout (self.centralwidget) self.gridLayout.setObjectName ("gridLayout") self.textEdit = QtGui.QTextEdit (self.centraldit.) Self.textEdit (self.centraldit.) Self.textEdit (self.centraldit.) setObjectName ("textEdit") self.gridLayout.addWidget (self.textEdit, 0, 0, 1, 1) MainWindow.setCentralWidget (self.centralwidget) self.menubar = QtGui.QMenuBar (MainWindow) self.menubar.setGeometry (QtCore. QRect (0, 0, 533, 25)) self.menubar.setObjectName ("menubar") self.menu_File = QtGui.QMenu (self.menubar) self. menu_File.setObjectName ("menu_File") self.menu_Help = QtGui.QMenu (self.menubar) self.menu_Help.setObjectName ("menu_Help") MainWindow.setMenuBar (self.menubar) self.statusbar = QtGui.QStatusBar (MainWindow) self. statusbar.setObjectNam e ("statusbar") MainWindow.setStatusBar (self.statusbar) self.action_New = QtGui.QAction (MainWindow) self.action_Nuevo.setObjectName ("action_New") self.action_Open = QtGui.QAction (MainWindow) self.action_bjectName (MainWindow) self.action_bjectName (SetObjectName) "action_Abrir") self.action_Save = QtGui.QAction (MainWindow) self.action_Save.setObjectName ("action_Save") self.actionSave_As = QtGui.QAction (MainWindow) self.actionSave_As.setObjectName ("actionSave_As") self.action_Quit.QAction (MainWindow) self.action_Quit.setObjectName ("action_Quit") self.actionA_bout = QtGui.QAction (MainWindow) self.actionA_bout.setObjectName ("actionA_bout") self.action_Help = QtGui.QAction (MainWindow) self. action_Help (MainWindow) self.action_Help "action_Help") self.menu_File.addAction (self.action_New) self.menu_File.addAction (self.action_Open) self.menu_File.addAction (self.action_Save) self.menu_File.addAction (self.menu_As ) self.menu_File (self.ActionSave_As) self.menu_File self.action_Quit) self.menu_Help.addAction (self.actionA_bout) self.menu_Help.addAction (self. action_Help) self.menubar.addAction (self.menu_File.menuAction ()) self.menubar.addAction (self.menu_Help.menuAction ()) self.retranslateUi (MainWindow) QtCore.QObject.connect (self.action_Quit, QtCore.SIGNAL ( self.action_Quit, QtCore.SIGNAL ( "déclenché ()"), MainWindow.close) QtCore.QMetaObject.connectSlotsByName (MainWindow) def retranslateUi (self, MainWindow): MainWindow.setWindowTitle (QtGui.QApplication.translate " ("MainWindow", MiEditor", None, QApplicationGui ", None, QApplicationGui" .UnicodeUTF8)) self.menu_File.setTitle (QtGui.QApplication.translate ("MainWindow", "& File", None, QtGui.QApplication.UnicodeUTF8)) self.menu_Help. setTitle ("QtGui.QApplication.translate", "QtGui.QApplication.translate" & Help ", None, QtGui.QApplication.UnicodeUTF8)) self.action_Nuevo.setText (QtGui.QApplication.translate (" MainWindow "," & New " , None, QtGui.QApplication.UnicodeUTF8)) self.action_Abrir.setText (QtGui.Abrir.setText (QtGui.Abrir.setText (QtGui.Abrir.setText) .translate ("MainWindow", "& Open", None, QtGui. QApplication.UnicodeUTF8)) self.action_Save.setText (QtGui.QApplication.translate ("MainWindow", "& Save", None, QtGui.QApplication.UnicodeUTF8)) self.actionSave_As.setText (QtGui.QApplication.translate ("MainWindow", "Enregistrer et sous", Aucun, QtGui.QApplication.UnicodeUTF8))) self.action_Quit.setText (QtGui.QApplication (" self.translate") MainWindow "," & Exit ", None, QtGui.QApplication.UnicodeUTF8)) self.actionA_bout.setText (QtGui.QApplication.translate (" MainWindow "," To & near ", None, QtGui.QApplication. UnicodeUTFelp8)) self.action_HnicodeUTFelp8)). setText (QtGui.QApplication.translate ("MainWindow", "& Support technique", Aucun, QtGui.QApplication.UnicodeUTF8)) 
Ensuite, nous devrons programmer le code pour donner des fonctionnalités à l'éditeur, en instanciant chaque menu et la zone de texte, le code est assez étendu, nous ne développons ici que la conception de l'interface et sa conversion …
La création de l'interface utilisateur graphique avec Qt Designer, facilite la conception d'applications et c'est aussi un excellent outil d'apprentissage puisque le code dépendra de nous.
Qt Designer permet de voir les propriétés de chaque composant avant de le traduire, la programmation peut aussi se faire sans l'interface graphique directement dans n'importe quel éditeur de texte si l'on connaît les librairies nécessaires et leurs propriétés.
Python peut également gérer des applications qui se connectent à des bases de données telles que Mysql ou Sqlite, via une connexion et des opérations sur les bases de données avec Python, nous pouvons également ajouter une interface visuelle à notre application créée avec les bibliothèques graphiques de Qt en utilisant PyQt. Nous avancerons plus loin dans la programmation d'interfaces graphiques pour les utilisateurs avec Python dans un autre tutoriel.Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave