Tutoriel PyQt5 - Bouton poussoir

Jinku Hu 30 janvier 2023 23 janvier 2020
  1. Bouton poussoir PyQt5 - QPushButton
  2. PyQt5 Style de l’ensemble de widgets pour étiquette QLabel
  3. PyQt5 Événement de clic d’étiquette QLabel
Tutoriel PyQt5 - Bouton poussoir

Le widget bouton poussoir QPushButton est un bouton de commande dans PyQt5. Il est cliqué par l’utilisateur pour commander au PC d’effectuer une action spécifique, comme Appliquer, Annuler et Sauvegarder.

Bouton poussoir PyQt5 - QPushButton

import sys
from PyQt5 import QtWidgets

def basicWindow():
    app = QtWidgets.QApplication(sys.argv)
    windowExample = QtWidgets.QWidget()
    
    buttonA = QtWidgets.QPushButton(windowExample)
    labelA = QtWidgets.QLabel(windowExample)
    
    buttonA.setText('Click!')
    labelA.setText('Show Label')
    
    windowExample.setWindowTitle('Push Button Example')
    
    buttonA.move(100, 50)
    labelA.move(110, 100)
    
    windowExample.setGeometry(100, 100, 300, 200)
    windowExample.show()
    sys.exit(app.exec_())

basicWindow()

Où,

buttonA = QtWidgets.QPushButton(windowExample)

Le bouton A est le bouton poussoir Q de QtWidgets et il doit être ajouté à la fenêtre Exemple de la même manière que les étiquettes présentées dans les derniers chapitres (/fr/tutorial/pyqt5/pyqt5-label/).

buttonA.setText('Click!')

Il définit le texte du boutonA comme étant Click!.

Bouton poussoir PyQt5

En fait, ça ne va rien faire.

PyQt5 Style de l’ensemble de widgets pour étiquette QLabel

Le style du widget PyQt5 QLabel comme la couleur de fond, la famille de police et la taille de police peut être défini avec la méthode setStyleSheet. Il fonctionne comme une feuille de style dans le CSS.

buttonA.setStyleSheet("background-color: red;font-size:18px;font-family:Times New Roman;");

Il définit buttonA avec les styles suivants,

Style Valeur
background-color red
font-size 18px
font-family Times New Roman

Il est pratique de définir les styles dans PyQt5 car il est similaire au CSS.

import sys
from PyQt5 import QtWidgets

def basicWindow():
    app = QtWidgets.QApplication(sys.argv)
    windowExample = QtWidgets.QWidget()
    
    buttonA = QtWidgets.QPushButton(windowExample)
    labelA = QtWidgets.QLabel(windowExample)

    buttonA.setStyleSheet("background-color: red;font-size:18px;font-family:Times New Roman;");
    
    buttonA.setText('Click!')
    labelA.setText('Show Label')
    
    windowExample.setWindowTitle('Push Button Example')
    
    buttonA.move(100, 50)
    labelA.move(110, 100)
    
    windowExample.setGeometry(100, 100, 300, 200)
    windowExample.show()
    sys.exit(app.exec_())

basicWindow()

Exemple de feuille de style pour les boutons poussoirs de la PyQt5

PyQt5 Événement de clic d’étiquette QLabel

L’événement de clic de bouton est connecté à une fonction spécifique avec la méthode QLabel.clicked.connect(func).

import sys
from PyQt5 import QtWidgets
   

class Test(QtWidgets.QMainWindow):
    def __init__(self):
        QtWidgets.QMainWindow.__init__(self)

        self.buttonA = QtWidgets.QPushButton('Click!', self)
        self.buttonA.clicked.connect(self.clickCallback)
        self.buttonA.move(100, 50)

        self.labelA = QtWidgets.QLabel(self)
        self.labelA.move(110, 100)

        self.setGeometry(100, 100, 300, 200)

    def clickCallback(self):
        self.labelA.setText("Button is clicked")

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    test = Test()
    test.show()
    sys.exit( app.exec_() )

Lorsque le QPushButton boutonA est cliqué, il déclenche la fonction clickCallback pour définir le texte du label comme Button is clicked.

Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn