Python PyQt Widgets courants

PyQt est une boîte à outils de programmation GUI pour le langage Python, et c'est la liaison Python du framework d'application Qt.

Qt est un framework multiplateforme de développement d'applications GUI en C++, largement utilisé pour développer des programmes GUI.

PyQt fournit un riche ensemble de widgets pour créer des interfaces utilisateur ; ces widgets sont les briques de base pour construire des applications GUI.


Widgets de fenêtre de base

QMainWindow

QMainWindow est la classe de fenêtre principale, fournissant un framework d'application standard :

Exemple

from PyQt5.QtWidgets import QMainWindow, QApplication

app = QApplication([])
window = QMainWindow()
window.setWindowTitle('Exemple de fenêtre principale')
window.setGeometry(100, 100, 800, 600)  # x, y, largeur, hauteur
window.show()
app.exec_()

QWidget

QWidget est la classe de base de tous les objets d'interface utilisateur :

Exemple

from PyQt5.QtWidgets import QWidget

widget = QWidget()
widget.setWindowTitle('Fenêtre de base')
widget.show()

Widgets de saisie courants

QLabel

Afficher du texte ou des images :

Exemple

from PyQt5.QtWidgets import QLabel

label = QLabel('Ceci est un libellé')
label.setStyleSheet('font-size: 16px; color: blue;')

QLineEdit

Champ de saisie de texte sur une ligne :

Exemple

from PyQt5.QtWidgets import QLineEdit

line_edit = QLineEdit()
line_edit.setPlaceholderText('Veuillez saisir le contenu...')

QTextEdit

Éditeur de texte multiligne :

Exemple

from PyQt5.QtWidgets import QTextEdit

text_edit = QTextEdit()
text_edit.setPlainText('Éditeur de texte multiligne')

QComboBox

Liste déroulante de sélection :

Exemple

from PyQt5.QtWidgets import QComboBox

combo = QComboBox()
combo.addItems(['Option 1', 'Option 2', 'Option 3'])

Widgets de boutons

QPushButton

Bouton normal :

Exemple

from PyQt5.QtWidgets import QPushButton

button = QPushButton('Cliquez-moi')
button.setStyleSheet('background-color: green; color: white;')

QRadioButton

Bouton radio :

Exemple

from PyQt5.QtWidgets import QRadioButton

radio1 = QRadioButton('Option 1')
radio2 = QRadioButton('Option 2')

QCheckBox

Case à cocher :

Exemple

from PyQt5.QtWidgets import QCheckBox

check1 = QCheckBox('Choix 1')
check2 = QCheckBox('Choix 2')

Widgets de mise en page

QHBoxLayout

Disposition horizontale :

Exemple

from PyQt5.QtWidgets import QHBoxLayout, QPushButton

h_layout = QHBoxLayout()
h_layout.addWidget(QPushButton('Gauche'))
h_layout.addWidget(QPushButton('Centre'))
h_layout.addWidget(QPushButton('Droite'))

QVBoxLayout

Disposition verticale :

Exemple

from PyQt5.QtWidgets import QVBoxLayout, QPushButton

v_layout = QVBoxLayout()
v_layout.addWidget(QPushButton('Haut'))
v_layout.addWidget(QPushButton('Milieu'))
v_layout.addWidget(QPushButton('Bas'))

QGridLayout

Disposition en grille :

Exemple

from PyQt5.QtWidgets import QGridLayout, QPushButton

grid = QGridLayout()
grid.addWidget(QPushButton('(0,0)'), 0, 0)
grid.addWidget(QPushButton('(0,1)'), 0, 1)
grid.addWidget(QPushButton('(1,0)'), 1, 0)

Widgets avancés

QTableWidget

Widget de tableau :

Exemple

from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem

table = QTableWidget(3, 3)  # 3 lignes 3 colonnes
table.setHorizontalHeaderLabels(['Colonne 1', 'Colonne 2', 'Colonne 3'])
table.setItem(0, 0, QTableWidgetItem('Données 1'))

QTreeWidget

Widget d'arborescence :

Exemple

from PyQt5.QtWidgets import QTreeWidget, QTreeWidgetItem

tree = QTreeWidget()
tree.setHeaderLabels(['Name', 'Value'])
root = QTreeWidgetItem(tree, ['Root Node'])
child = QTreeWidgetItem(root, ['Child Node', '123'])

QTabWidget

Widget à onglets :

Exemple

from PyQt5.QtWidgets import QTabWidget, QWidget

tab = QTabWidget()
tab.addTab(QWidget(), 'Onglet 1')
tab.addTab(QWidget(), 'Onglet 2')

Widgets de dialogue

QMessageBox

Boîte de message :

Exemple

from PyQt5.QtWidgets import QMessageBox

msg = QMessageBox()
msg.setWindowTitle('Invite')
msg.setText('Ceci est une boîte de message')
msg.setIcon(QMessageBox.Information)
msg.exec_()

QFileDialog

Boîte de dialogue de fichier :

Exemple

from PyQt5.QtWidgets import QFileDialog

file_name = QFileDialog.getOpenFileName(None, 'Sélectionner un fichier', '', 'Fichiers texte (*.txt);;Tous les fichiers (*)')

Paramètres de style

PyQt permet d'utiliser des styles CSS pour embellir les widgets :

Exemple

button = QPushButton('Bouton stylisé')
button.setStyleSheet('''
    QPushButton {
        background-color: #4C7EAF;
        border: none;
        color: white;
        padding: 10px 24px;
        text-align: center;
        font-size: 16px;
        margin: 4px 2px;
        border-radius: 8px;
    }
    QPushButton:hover {
        background-color: #4777A6;
    }
'''
)
Autres extensions