Exercice12
le but de cet exercice est de créer une interface utilisateur interactive permettant à l'utilisateur de sélectionner une date à partir d'un calendrier, et d'afficher cette date sur un QLabel.
Question 1 : Utilisez l'éditeur graphique Qt Designer pour créer un fichier intitulé "calendar.ui". Ce fichier doit afficher une fenêtre qui présente à l'utilisateur un calendrier lui permettant de sélectionner une date à l'aide de la souris comme illustré dans la figure suivante :
Veuillez noter qu'à ce stade, il n'est pas nécessaire de créer l'action associée à la sélection au niveau du calendar.
Question 2 : Après avoir créé le fichier "calendar.ui", procédez à sa conversion en un fichier Python nommé "date.py" en utilisant la commande suivante :
1 |
pyuic5 -x calendar.ui -o date.py |
Question 3 : Au sein de la classe Ui_Form générée par Qt Designer, Créez une méthode nommée "selected_date()" permettant de récupérer la date sélectionnée et de l'afficher dans le QLabel.
Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(321, 256) self.calendarWidget = QtWidgets.QCalendarWidget(Form) self.calendarWidget.setGeometry(QtCore.QRect(0, 0, 312, 183)) self.calendarWidget.setObjectName("calendarWidget") self.label = QtWidgets.QLabel(Form) # Connexion du signal selectionChanged à la méthode show_selected_date self.calendarWidget.selectionChanged.connect(self.selected_date) self.label.setGeometry(QtCore.QRect(10, 200, 301, 21)) self.label.setStyleSheet("font: 75 12pt \"MS Shell Dlg 2\";") self.label.setObjectName("label") self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.label.setText(_translate("Form", "Date sélectionnée : Aucune")) # méthode qui récupère la date depuis le QCalendar def selected_date(self): # Récupération de la date sélectionnée à partir du calendrier selected_date = self.calendarWidget.selectedDate() # Formatage de la date sous forme de chaîne "jj/MM/aaaa" formatted_date = selected_date.toString("dd/MM/yyyy") # Mise à jour de l'étiquette avec la date sélectionnée self.label.setText(f'Date sélectionnée: {formatted_date}') if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Form = QtWidgets.QWidget() ui = Ui_Form() ui.setupUi(Form) Form.show() sys.exit(app.exec_()) |
Younes Derfoufi
CRMEF OUJDA