Files
2025-07-04 19:26:39 +02:00

87 lines
3.2 KiB
Python

import sys
from PySide2.QtGui import QIcon
from PySide2.QtWidgets import QApplication, QLineEdit, QPushButton, QVBoxLayout, QAction, \
QMainWindow, QWidget
class Dialog(QMainWindow):
"""
Classe définissant notre fenêtre principale.
"""
def __init__(self, parent=None):
"""
Initialiser chaque nouvelle instance de notre fenêtre.
Args:
parent: Widget qui va contenir notre boîte de dialogue.
"""
super().__init__(parent=parent)
# Changer le titre de la fenêtre et changer la position et taille
self.setWindowTitle("Ma nouvelle fenêtre")
self.setGeometry(50, 50, 640, 480)
# Définir l'icône pour la fenêtre
self.setWindowIcon(QIcon.fromTheme("exit"))
# On crée manuellement des contrôles dans notre fenêtre et des menus
self.edit = QLineEdit("Zone de texte")
self.button = QPushButton("Appuyez ici !")
self.menuentry1 = QAction(QIcon.fromTheme("exit"), "&Fin")
self.menuentry2 = QAction(QIcon.fromTheme("sleep"), "&Dodo")
self.filemenu = self.menuBar().addMenu("&File")
self.filemenu.addAction(self.menuentry1)
self.filemenu.addSeparator()
self.filemenu.addAction(self.menuentry2)
# Insérer un objet de mise en page dans notre fenêtre,
# et y ajouter nos champ de texte et bouton
frame = QWidget()
layout = QVBoxLayout()
layout.addWidget(self.edit)
layout.addWidget(self.button)
# Ajouter la mise en page au widget
frame.setLayout(layout)
# Définir le widget comme le contenu de la fenêtre
self.setCentralWidget(frame)
# Connecter le clic du bouton à la méthode "validate_button"
self.button.clicked.connect(self.button_clicked)
# Connecter la validation du menu1 à la même méthode
self.menuentry1.triggered.connect(self.button_clicked)
# Connecter la modification du champ de texte à une méthode
self.edit.textEdited.connect(self.text_modified)
def button_clicked(self):
"""
On définit cette méthode pour répondre au clic sur un bouton.
Il faut que l'on configure notre bouton pour que lorsqu'on clique
dessus, cette méthode soit exécutée.
"""
print(f"Vous avez saisi {self.edit.text()}")
def text_modified(self):
"""
On définit cette méthode pour répondre à la modification du champ texte.
Cette méthode n'est pas spécifique à Qt, c'est juste qu'on peut lier
des événements de contrôles Qt à des fonctions arbitraires. Et on
va lier l'édition du champ de texte à cette méthode-ci.
"""
print(f"{self.edit.text()}")
if __name__ == "__main__":
# Créer une instance qui définit une application Qt
# Via la variable "sys.argv", qui correspond aux arguments en ligne de commande
# on peut configurer le comportement de notre application...
# Également : notre application est un Singleton
application = QApplication(sys.argv)
# Ajouter notre boîte de dialogue
dialog = Dialog()
dialog.show()
# Lancer la boucle Qt, qui ferme le programme quand on ferme toutes les fenêtres
sys.exit(application.exec_())