La classe QMainWindow PyQt5 Python

Structure de la classe QMainWindow en Python PyQt5

1. Description de la classe QMainWindow

  1. La classe QMainWindow dans PyQt5: est une adaptation de la classe correspondante dans le framework Qt pour le développement d'interfaces graphiques en Python. Elle offre une structure pour créer des fenêtres principales dans des applications PyQt5. Elle fournit une structure prête à l'emploi pour créer des interfaces utilisateur complètes. QMainWindow fournit une infrastructure complète pour le développement d'applications graphiques avec une interface utilisateur riche et flexible. Elle est particulièrement adaptée aux applications de bureau nécessitant une fenêtre principale avec une barre de menu, des barres d'outils et d'autres composants d'interface utilisateur standard.
  2. Au cœur de QMainWindow: se trouve la gestion des éléments clés de l'interface utilisateur de l'application, notamment les menus, les barres d'outils, la barres d'état et les widgets pouvant être ancrés (dockables). Ces éléments jouent un rôle crucial dans la création d'une interface utilisateur complète et conviviale, facilitant ainsi l'interaction des utilisateurs avec les diverses fonctionnalités de l'application.

2. principales fonctionnalités de la classe QMainWindow

Voici une description des principales fonctionnalités de la classe QMainWindow dans le contexte de PyQt5:

  1. Barre de menu (QMenuBar) : QMainWindow offre une barre de menu que vous pouvez personnaliser pour inclure des actions, des menus déroulants et d'autres éléments de menu.
  2. Barres d'outils (QToolBar) : Vous pouvez ajouter des barres d'outils contenant des boutons d'actions pour fournir un accès rapide aux fonctionnalités les plus fréquemment utilisées.
  3. Zone centrale (QWidget) : La zone centrale de la fenêtre est généralement réservée au contenu principal de l'application. Vous pouvez y placer des widgets personnalisés ou d'autres conteneurs pour organiser l'interface utilisateur.
  4. Barre d'état (QStatusBar) : QMainWindow inclut une barre d'état en bas de la fenêtre, généralement utilisée pour afficher des informations sur l'état de l'application ou pour fournir des conseils contextuels.
  5. Gestionnaire de dock (QDockWidget) : La classe QDockWidget peut être utilisée pour créer des fenêtres flottantes ou des volets ancrables à l'intérieur de la fenêtre principale. Ces volets peuvent contenir des widgets supplémentaires.
  6. Gestionnaire de disposition (QLayout) : QMainWindow utilise un gestionnaire de disposition pour organiser les différents composants de manière appropriée. Vous pouvez personnaliser la disposition selon les besoins de votre application.
  7. Gestion des actions (QAction) : QMainWindow permet la gestion des actions, qui représentent des actions pouvant être déclenchées par l'utilisateur à partir du menu, des barres d'outils ou d'autres emplacements.
  8. Événements (QEvent) : Vous pouvez réagir aux événements générés par l'utilisateur ou le système en surchargeant les méthodes appropriées de la classe QMainWindow.




3. Les principaux composants d'une fenêtre QMainWindow

La classe QMainWindow dans PyQt5 offre des fonctionnalités similaires à celles de Qt pour la création d'interfaces graphiques en Python. Elle facilite le développement d'applications avec une structure standard pour les éléments tels que la barre de menu, les barres d'outils, la zone centrale, la barre d'état, etc.
Barre de menu (QMenuBar) : Vous pouvez utiliser la méthode menuBar() pour accéder à la barre de menu de la fenêtre principale. Vous pouvez ensuite ajouter des actions, des menus et des actions aux menus de la barre de menu.

Barres d'outils (QToolBar) : Vous pouvez créer des barres d'outils à l'aide de la méthode addToolBar(). Les barres d'outils peuvent contenir des actions pour fournir un accès rapide à certaines fonctionnalités.

Zone centrale (QWidget) : La zone centrale de la fenêtre peut être définie en utilisant la méthode setCentralWidget(). Vous pouvez y placer des widgets personnalisés ou d'autres conteneurs.

Barre d'état (QStatusBar) : Vous pouvez accéder à la barre d'état à l'aide de la méthode statusBar(). La barre d'état est généralement utilisée pour afficher des messages informatifs.

status_bar = self.statusBar()
status_bar.showMessage('Ready')

Gestionnaire de dock (QDockWidget) : Vous pouvez utiliser la classe QDockWidget pour créer des fenêtres flottantes ou des volets ancrables. Ces volets peuvent contenir des widgets supplémentaires.

Gestion des actions (QAction) : Vous pouvez réagir aux actions de menu, de barre d'outils ou d'autres sources en connectant des fonctions à ces actions.

4. Usage et syntaxe de QMainWindow

4.1 Usage

Pour exploiter les fonctionnalités de la classe QMainWindow et concevoir des applications graphiques, il est nécessaire de commencer par l'importer et créer une instance de celle-ci :

4.2 Exemple simple d'usage de QMainWindow sans utiliser la POO

Première fenêtre QMainWindow PyQt5 avec widget QPushButton

4.3 Exemple de QMainWindo en adoptant l'approche objet

4.4 Exemple de QMainWindow avec une barre de menu

Nous allons voir un exemple de QMainWindow avec les caractéristique suivantes:

  1. Nous créons une QMainWindow: personnalisée appelée MainWindow.
  2. Nous ajoutons ensuite un widget central: une fenêtre QWidget() pour afficher le contenu principal de l'application.
  3. Nous créons quatre actions de menu : "Nouveau", "Ouvrir", "Enregistrer" et "Quitter". Chaque action est associée à une fonction de rappel qui sera exécutée lorsque l'action du menu sera déclenchée.
  4. Nous créons ensuite une barre de menu: en utilisant la méthode menuBar() de la QMainWindow.
  5. Nous ajoutons un menu "Fichier": à la barre de menu, puis nous y ajoutons les actions "Nouveau", "Ouvrir", "Enregistrer" et "Quitter".

Exemple 1

Exemple2

Lors de l'exécution de l'application, une barre de menu apparaîtra en haut de la fenêtre, comprenant le menu "Fichier" avec ses actions associées. Chaque fois que vous cliquez sur une action, la fonction de rappel correspondante sera déclenchée, et un message s'affichera dans la console pour signaler que l'action a été exécutée:

Exemple de fenêtre QMainWindow PyQt5 avec Barre de menu

5. Méthodes et attributs associées à un objet QMainWindow

Voici une synthèse des méthodes et des attributs fréquemment utilisés en relation avec un objet QMainWindow dans PyQt5 :

5.1 Méthodes

  1. __init__(self, parent=None): Le constructeur de la classe QMainWindow.
  2. setCentralWidget(self, widget): Affecte le widget central de la fenêtre principale.
  3. centralWidget(self): Retourne le widget central actuellement défini.
  4. menuBar(self): Donne accès à la barre de menu (QMenuBar) de la fenêtre principale.
  5. statusBar(self): Renvoie la barre d'état (QStatusBar) de la fenêtre principale.
  6. addToolBar(self, toolbar): Intègre une barre d'outils (QToolBar) à la fenêtre principale.
  7. addDockWidget(self, area, dockwidget): Intègre un widget ancrable (QDockWidget) à la fenêtre principale dans la zone spécifiée.
  8. setMenuBar(self, menubar): Configure la barre de menu de la fenêtre principale.
  9. setStatusBar(self, statusbar): Configure la barre d'état de la fenêtre principale.
  10. setWindowTitle(self, title): Définit le titre de la fenêtre principale.
  11. show(): Affiche la fenêtre principale à l'écran.
  12. close(): Ferme la fenêtre principale.
  13. resize(self, width, height): Modifie les dimensions de la fenêtre principale.

5.2 Attributs

  1. windowTitle: Contient le titre de la fenêtre principale.
  2. geometry: Contient la géométrie de la fenêtre principale (position et taille).
  3. centralWidget: Référence vers le widget central de la fenêtre principale.
  4. menuBar: Référence vers la barre de menu de la fenêtre principale (QMenuBar).
  5. statusBar: Référence vers la barre d'état de la fenêtre principale (QStatusBar).
  6. toolBars(): Renvoie une liste des barres d'outils (QToolBar) ajoutées à la fenêtre principale.
  7. dockWidgets(): Renvoie une liste des widgets ancrables (QDockWidget) ajoutés à la fenêtre principale.
  8. menuWidget(): Référence vers le widget menu de la fenêtre principale.




 

Younes Derfoufi
CRMEF OUJDA

Leave a Reply