Les bases de Pyqt5

Les bases de Pyqt5
PYQT5 est un module Python pour le développement d'applications de bureau GUI. Il est disponible pour plusieurs plates-formes telles que Windows, Mac, Linux, iOS et Android. Python propose plusieurs modules qui sont en fait capables de développer GUI, tels que Tkinter, Wxpython, Pyside2, et plus. Cependant, PYQT5 utilise plus de 1000 classes; En fait, Pyqt5 est un énorme module! De plus, PYQT5 comprend un concepteur QT, un concepteur d'interface utilisateur graphique, qui facilite en outre la création de GUI. Il peut être utilisé pour créer n'importe quoi, des lecteurs multimédias aux navigateurs Web. Dans ce tutoriel, nous apprendrons les bases du module PYQT5.

Tout d'abord, installons pyqt5:

pip install pyqt5
PIP installe Pyqt5-Tools

Étape 1: Création de la fenêtre vide

La première étape pour créer n'importe quoi est la configuration de la fenêtre vide. La fenêtre vide elle-même nécessite quelques lignes de code, alors regardons cela.

à partir de Pyqt5 Import Qtwidgets
de pyqt5.QtWidgets Import Qapplication, Qmainwindow
importer sys
à partir de Pyqt5 import qtgui
Fenêtre de classe (qtwidgets.Qwidget):
def __init __ (soi):
super().__init __ ()

Définissez la géométrie de la fenêtre à l'aide de la méthode setGeometry (), qui prend quatre arguments - la position X initiale, la position y initiale (en d'autres termes, où le coin supérieur gauche apparaît sur l'écran), la largeur et la hauteur du fenêtre.

soi.SetGeométrie (350, 100, 800, 600)

Définissez le titre de la fenêtre avec la méthode SetWindowTitle ().

soi.setWindowTitle ("pyqt5")

Vous pouvez définir l'icône à l'aide de setwindowicon (). Notez que l'icône doit être de 64 pixels par 64 pixels.

soi.setwindowicon (qtgui.Qicon ("hochet.png "))

Chaque fichier pyqt5 nécessite cette prochaine ligne qui prend SYS.argv comme argument.

application = qapplication (sys.argv)

Ensuite, créez une instance de la classe que nous avons créée ci-dessus.

win = window ()
gagner.montrer()

Pour quitter la fenêtre en appuyant sur le bouton X, nous avons besoin de sys.sortir (application.exec ()).

système.sortir (application.exec ())

Ce code créera une fenêtre vide. Le code dans son ensemble ressemblerait à ceci:

à partir de Pyqt5 Import Qtwidgets
de pyqt5.QtWidgets Import Qapplication, Qmainwindow
importer sys
à partir de Pyqt5 import qtgui
Fenêtre de classe (qtwidgets.Qwidget):
def __init __ (soi):
super().__init __ ()
soi.SetGeométrie (350, 100, 800, 600)
soi.setWindowTitle ("pyqt5")
soi.setwindowicon (qtgui.Qicon ("hochet.png "))
application = qapplication (sys.argv)
win = window ()
gagner.montrer()
système.sortir (application.exec ())

Étape 2: barre d'entrée

Ensuite, créons une barre d'entrée. Une barre d'entrée est un endroit où les utilisateurs peuvent ajouter du texte que nous pouvons récupérer. Les barres d'entrée sont créées à l'aide de Qwidgets.QLineEdit (). Et évidemment, nous définissons sa géométrie en utilisant la méthode setGeometry ().

def initui (self):
soi.input_bar = qtwidgets.QLineEdit (Self)
soi.entrée_bar.SetGeométrie (150, 250, 500, 40)

Attention; Vous devez toujours activer la fonction dans la méthode __init__ comme suit:

soi.IniTUI ()

Le code en entier à ce stade ressemblerait à ceci:

à partir de Pyqt5 Import Qtwidgets
de pyqt5.QtWidgets Import Qapplication, Qmainwindow
importer sys
à partir de Pyqt5 import qtgui
Fenêtre de classe (qtwidgets.Qwidget):
def __init __ (soi):
super().__init __ ()
soi.SetGeométrie (350, 100, 800, 600)
soi.setWindowTitle ("pyqt5")
soi.setwindowicon (qtgui.Qicon ("hochet.png "))
soi.IniTUI ()
def initui (self):
soi.input_bar = qtwidgets.QLineEdit (Self)
soi.entrée_bar.SetGeométrie (150, 250, 500, 40)
application = qapplication (sys.argv)
win = window ()
gagner.montrer()
système.sortir (application.exec ())

Étape 3: Création de boutons

Maintenant, ajoutons des boutons à la toile vierge. Alors, écrivons le code du bouton. Pour le bouton, nous utilisons Qtwidgets.Qpushbutton (). Comme d'habitude, nous pouvons définir sa géométrie à l'aide de la méthode SetGeometry ().

soi.Button1 = qtwidgets.Qpushbutton ("show", self)
soi.Button1.SetGeométrie (275, 350, 200, 50)

Définissez l'icône à l'aide de la méthode seticon ().

soi.Button1.SETICON (QTGUI.Qicon ("hochet.png "))

Définissez le style du texte à l'aide de la méthode SetStylesheet (). Vous pouvez modifier la couleur, le poids de la police et la taille de la police, entre autres.

soi.Button1.Setstylesheet ("Couleur: noir")
soi.Button1.SetStylesheet ("Font-Weight: Bold")
soi.Button1.Setstylesheet ("taille de police: 18pt")

Pour que le bouton fasse quelque chose lorsqu'il est cliqué, vous devez dire au bouton qu'il doit activer une fonction lorsqu'il est cliqué. Ceci est fait en utilisant cliqué.connect (), où la fonction activée est transmise comme un argument. Dans mon cas, c'est:

soi.Button1.cliqué.se connecter (soi.Button_clicked)

Ensuite, nous définissons la fonction à appeler ou à activer lorsque le bouton est enfoncé. Pour l'instant, nous allons simplement l'imprimer sur la console.

def Button_clicked (self):
url_value = self.entrée_bar.texte()
print (url_value)

Le code dans son ensemble ressemblerait maintenant à ceci:

à partir de Pyqt5 Import Qtwidgets
de pyqt5.QtWidgets Import Qapplication, Qmainwindow
importer sys
à partir de Pyqt5 import qtgui
Fenêtre de classe (qtwidgets.Qwidget):
def __init __ (soi):
super().__init __ ()
soi.SetGeométrie (350, 100, 800, 600)
soi.setWindowTitle ("pyqt5")
soi.setwindowicon (qtgui.Qicon ("hochet.png "))
soi.IniTUI ()
def initui (self):
soi.input_bar = qtwidgets.QLineEdit (Self)
soi.entrée_bar.SetGeométrie (150, 250, 500, 40)
soi.Button1 = qtwidgets.Qpushbutton ("show", self)
soi.Button1.SetGeométrie (275, 350, 200, 50)
soi.Button1.SETICON (QTGUI.Qicon ("hochet.png "))
soi.Button1.Setstylesheet ("Couleur: noir")
soi.Button1.SetStylesheet ("Font-Weight: Bold")
soi.Button1.Setstylesheet ("taille de police: 18pt")
soi.Button1.cliqué.se connecter (soi.Button_clicked)
def Button_clicked (self):
url_value = self.entrée_bar.texte()
print (url_value)
application = qapplication (sys.argv)
win = window ()
gagner.montrer()
système.sortir (application.exec ())

Étape 4: Création d'étiquettes

Maintenant, modifions le bouton Appuyez sur la commande à l'aide de QLabels. QLabels sont utilisés pour ajouter du texte. Nous l'ajoutons à Def initui (self).

soi.étiquette = qtwidgets.Qlabel (soi)

Nous définissons le texte sur l'étiquette à l'aide de la méthode setText ().

soi.étiqueter.setText ("Modifier ce titre en cliquant sur le bouton")
soi.étiqueter.setGeometry (qtcore.Qrect (200, 80, 500, 100))

Nous définissons la police, la taille et le poids en utilisant le setStylesheet ().Nous définissons la police, la taille et le poids en utilisant le setStylesheet ().

soi.étiqueter.SetStylesheet ("Font-Weight: Bold")
soi.étiqueter.Setstylesheet ("taille de police: 18pt")

Et enfin, nous mettons à jour tout en utilisant la méthode Update ().

soi.étiqueter.mise à jour()

Cela crée ce qui suit:

Maintenant, nous pouvons modifier le contenu dans la fonction Button_Clicked ().

def Button_clicked (self):

Nous pouvons récupérer ce que l'utilisateur écrit dans la barre de texte à l'aide de la méthode texte ().

url_value = self.entrée_bar.texte()

Nous pouvons ensuite modifier l'étiquette sur le bouton cliquant en utilisant la méthode setText () et les placer au bon emplacement à l'aide de la méthode setGeometry ().

soi.étiqueter.setText (url_value)
soi.étiqueter.setGeometry (qtcore.Qrect (200, 80, 500, 100))

Le code dans son ensemble ressemblerait maintenant à ceci:

à partir de Pyqt5 Import Qtwidgets
de pyqt5.QtWidgets Import Qapplication, Qmainwindow
importer sys
à partir de Pyqt5 import qtgui, qtcore
Fenêtre de classe (qtwidgets.Qwidget):
def __init __ (soi):
super().__init __ ()
soi.SetGeométrie (350, 100, 800, 600)
soi.setWindowTitle ("pyqt5")
soi.setwindowicon (qtgui.Qicon ("hochet.png "))
soi.IniTUI ()
def initui (self):
soi.input_bar = qtwidgets.QLineEdit (Self)
soi.entrée_bar.SetGeométrie (150, 250, 500, 40)
soi.Button1 = qtwidgets.Qpushbutton ("show", self)
soi.Button1.SetGeométrie (275, 350, 200, 50)
soi.Button1.SETICON (QTGUI.Qicon ("hochet.png "))
soi.Button1.Setstylesheet ("Couleur: noir")
soi.Button1.SetStylesheet ("Font-Weight: Bold")
soi.Button1.Setstylesheet ("taille de police: 18pt")
soi.Button1.cliqué.se connecter (soi.Button_clicked)
soi.étiquette = qtwidgets.Qlabel (soi)
soi.étiqueter.setText ("Modifier ce titre en cliquant sur le bouton")
soi.étiqueter.setGeometry (qtcore.Qrect (200, 80, 500, 100))
soi.étiqueter.SetStylesheet ("Font-Weight: Bold")
soi.étiqueter.Setstylesheet ("taille de police: 18pt")
soi.étiqueter.mise à jour()
def Button_clicked (self):
url_value = self.entrée_bar.texte()
soi.étiqueter.setText (url_value)
soi.étiqueter.setGeometry (qtcore.Qrect (200, 80, 500, 100))
application = qapplication (sys.argv)
win = window ()
gagner.montrer()
système.sortir (application.exec ())

Étape 5: QVBoxLayout et QhboxLayout

je Ne sera past Ajoutez un QVBoxLayout ou QHboxLayout ici, mais vous pouvez si vous le souhaitez. QHBoxLayout organisera tout dans un motif horizontal, et QVboxLayout s'organisera verticalement. Si vous utilisez QHBoxLayout ou QVBoxLayout, vous devez omettre la méthode SetGeometry ().

Si vous vouliez l'ajouter, vous écririez ce qui suit dans Def InitUi (Self). Vous initialisez d'abord la mise en page à l'aide de qvboxlayout ():

soi.design = qvboxlayout ()

Vous ajoutez ensuite les widgets que vous souhaitez en utilisant la méthode AddWidget ().

soi.conception.addWidget (soi.étiqueter)
soi.conception.addWidget (soi.input_bar)
soi.conception.addWidget (soi.Button1)

Vous définissez la mise en page à l'aide de setLayout (), qui prend la variable initialisée comme argument.

soi.SetLayout (soi.conception)

Je n'en ai pas besoin ici parce que j'ai tout défini avec SetGeometry (), donc je vais omettre cela dans mon code. Cependant, si vous le souhaitez dans votre code, l'ensemble du code ressemblerait à ceci:

à partir de Pyqt5 Import Qtwidgets
de pyqt5.QtWidgets Importer Qapplication, QmainWindow, QHBoxLayout, QVBoxLayout
importer sys
à partir de Pyqt5 import qtgui, qtcore
Fenêtre de classe (qtwidgets.Qwidget):
def __init __ (soi):
super().__init __ ()
#soi.SetGeométrie (350, 100, 800, 600)
soi.setWindowTitle ("pyqt5")
soi.setwindowicon (qtgui.Qicon ("hochet.png "))
soi.IniTUI ()
def initui (self):
soi.input_bar = qtwidgets.QLineEdit (Self)
#soi.entrée_bar.SetGeométrie (150, 250, 500, 40)
soi.Button1 = qtwidgets.Qpushbutton ("show", self)
#soi.Button1.SetGeométrie (275, 350, 200, 50)
soi.Button1.SETICON (QTGUI.Qicon ("hochet.png "))
soi.Button1.Setstylesheet ("Couleur: noir")
soi.Button1.SetStylesheet ("Font-Weight: Bold")
soi.Button1.Setstylesheet ("taille de police: 18pt")
soi.Button1.cliqué.se connecter (soi.Button_clicked)
soi.étiquette = qtwidgets.Qlabel (soi)
soi.étiqueter.setText ("Modifier ce titre en cliquant sur le bouton")
#soi.étiqueter.setGeometry (qtcore.Qrect (200, 80, 500, 100))
soi.étiqueter.SetStylesheet ("Font-Weight: Bold")
soi.étiqueter.Setstylesheet ("taille de police: 18pt")
soi.étiqueter.mise à jour()
soi.design = qvboxlayout ()
soi.conception.addWidget (soi.étiqueter)
soi.conception.addWidget (soi.input_bar)
soi.conception.addWidget (soi.Button1)
soi.SetLayout (soi.conception)
def Button_clicked (self):
url_value = self.entrée_bar.texte()
soi.étiqueter.setText (url_value)
soi.étiqueter.setGeometry (qtcore.Qrect (200, 80, 500, 100))
application = qapplication (sys.argv)
win = window ()
gagner.montrer()
système.sortir (application.exec ())

Étape 6: concepteur QT

Ce qui est encore mieux avec PYQT5, c'est qu'il est livré avec son propre designer. Un designer est une console où vous pouvez concevoir l'interface graphique que vous souhaitez, et le programme effacera le code Python pour cela. QT Designer est livré dans le package Pyqt5-Tools, et il faut donc être installé pour qu'il fonctionne. Sur le designer QT, vous pouvez placer des boutons, des curseurs, etc.… Une fois que vous les avez placés, vous pouvez enregistrer le fichier en tant que .fichier d'interface utilisateur.

Une fois le fichier enregistré comme un .fichier d'interface utilisateur, vous devez toujours le convertir en un .fichier py pour que pycharm puisse l'afficher. Pour ce faire, ouvrez un terminal ou un CMD et tapez:

pyUic5 -x SAVED_FILE_NAME.ui -o python_file.py

J'ai enregistré mon fichier comme enregistré_file_name.ui. Le terminal effacera un fichier Python et l'appellera ce que vous avez demandé. Vous pouvez ensuite ouvrir le .fichier py dans pycharm et ajouter la logique.

N'oubliez pas que bien que nous puissions utiliser le concepteur pour concevoir la disposition de l'interface graphique, nous devons toujours ajouter de la logique au code, ce qui se fait uniquement via le code Python et non le concepteur. Malheureusement, le concepteur QT n'ajoute pas de logique au code!

Dans ce tutoriel, nous avons appris les bases de PYQT5 et comment utiliser le designer QT. Nous avons appris que nous pouvions créer des écrans vierges, ajouter des boutons à l'aide de qpushbutton, ajouter des barres d'entrée à l'aide de QLineEdit, ajouter du texte à l'aide de QLabels et arranger tout en utilisant QVBoxLayout / QhboxLayout. En fait, PYQT5 est un très grand module utilisé pour créer une variété d'applications de bureau GUI. Bien qu'il existe de nombreux modules pour les applications GUI dans Python, la plupart des gens choisissent PYQT5 car il offre un énorme choix de conceptions et un designer pour faciliter les tâches. En effet, Pyqt5 est un module qui mérite d'être appris!

Codage heureux!