En este artículo veremos cómo podemos crear una calculadora de edad usando PyQt5.
PyQt5 es un kit de herramientas GUI multiplataforma, un conjunto de enlaces de Python para Qt v5. Uno puede desarrollar una aplicación de escritorio interactiva con tanta facilidad debido a las herramientas y la simplicidad que ofrece esta biblioteca. Tiene que ser instalado usando el comando dado a continuación
pip install PyQt5
A continuación se muestra cómo se verá la calculadora de edad
Pasos de implementación de GUI:
1. Cree una etiqueta principal para el título del juego, configure sus propiedades
2. Cree una etiqueta de fecha de nacimiento, debajo de esta etiqueta cree el objeto QDateEdit para recibir la fecha y configure sus propiedades
3. Cree una etiqueta de fecha determinada , debajo de esta etiqueta, cree el objeto QDateEdit para recibir la nueva fecha y establezca sus propiedades
. 4. Cree un botón pulsador que, cuando se presione, se calcule la fecha
. 5. Cree una etiqueta de resultado para mostrar el resultado, es decir, la edad calculada.Pasos de implementación de back-end:
1. Agregue una acción al primer QDateEdit cuando se cambie la fecha
2. Dentro de la acción de edición de la primera fecha, obtenga la fecha de la edición de la segunda fecha y establezca esta fecha como la fecha máxima de la edición de la primera fecha
3. Agregue la acción a la segunda edición de fecha cuando se cambia la fecha
4. Dentro de la segunda acción de edición de fecha, obtenga la fecha de la primera edición de fecha y establezca esta fecha como la fecha mínima de la segunda edición de fecha
5. Configure diferentes a las ediciones de fecha de modo que la primera fecha debe ser menos de la segunda fecha
6. Agregue acción al botón pulsador
7. Dentro de la acción del botón pulsador, obtenga las fechas de ambas ediciones de fecha y calcule la diferencia y muestre la diferencia en la pantalla con la ayuda de la etiqueta de resultado
A continuación se muestra la implementación.
# importing libraries from PyQt5.QtWidgets import * from PyQt5 import QtCore, QtGui from PyQt5.QtGui import * from PyQt5.QtCore import * import sys class Window(QMainWindow): def __init__(self): super().__init__() # setting title self.setWindowTitle("Age calculator") # setting geometry self.setGeometry(100, 100, 500, 400) # calling method self.UiComponents() # showing all the widgets self.show() # method for components def UiComponents(self): # creating head label head = QLabel("Age Calculator", self) # setting geometry to the head head.setGeometry(100, 10, 300, 60) # font font = QFont('Times', 14) font.setBold(True) font.setItalic(True) font.setUnderline(True) # setting font to the head head.setFont(font) # setting alignment of the head head.setAlignment(Qt.AlignCenter) head.setStyleSheet("color : green;") # D.O.B label dob = QLabel("Date of Birth", self) # setting geometry dob.setGeometry(0, 80, 250, 50) # setting alignment and font dob.setAlignment(Qt.AlignCenter) dob.setFont(QFont('Times', 10)) # given date label given = QLabel("Given Date", self) # setting geometry given.setGeometry(300, 80, 250, 50) # setting alignment and font given.setAlignment(Qt.AlignCenter) given.setFont(QFont('Times', 10)) # creating a QDateEdit to get the d.o.b self.first = QDateEdit(self) # setting geometry self.first.setGeometry(25, 130, 200, 50) # setting font and alignment self.first.setAlignment(Qt.AlignCenter) self.first.setFont(QFont('Arial', 9)) # adding action to the first # when date get change self.first.dateChanged.connect(self.first_action) # creating a QDateEdit to get the given date self.second = QDateEdit(self) # setting geometry self.second.setGeometry(275, 130, 200, 50) # setting font and alignment self.second.setAlignment(Qt.AlignCenter) self.second.setFont(QFont('Arial', 9)) # adding action to the second # when date get change self.second.dateChanged.connect(self.second_action) # create a push button for calculate calculate = QPushButton("Calculate", self) # setting geometry to the push button calculate.setGeometry(200, 210, 100, 40) # setting color effect to the push button color = QGraphicsColorizeEffect() color.setColor(Qt.darkGreen) calculate.setGraphicsEffect(color) # adding action to the calculate button calculate.clicked.connect(self.find_age) # creating a result label to show the ans self.result = QLabel(self) # setting geometry self.result.setGeometry(50, 280, 400, 80) # setting style sheet and the font self.result.setAlignment(Qt.AlignCenter) self.result.setFont(QFont('Times', 12)) # setting stylesheet self.result.setStyleSheet("QLabel" "{" "border : 2px solid black;" "background : lightgrey;" "}") # making label multi line self.result.setWordWrap(True) # set dates to the first and second self.first.setDate(QDate(2000, 1, 1)) self.second.setDate(QDate(2020, 1, 1)) # method called by the first date edit def first_action(self): # get the second date date = self.second.date() # set the maximum date in first self.first.setMaximumDate(date) # method called by the first date edit def second_action(self): # get the first date date = self.first.date() # set the maximum date in first self.second.setMinimumDate(date) # method called by the push button def find_age(self): # get the first age get_Qdate1 = self.first.date() birth_year = get_Qdate1.year() birth_month = get_Qdate1.month() birth_day = get_Qdate1.day() # get the second age get_Qdate2 = self.second.date() given_year = get_Qdate2.year() given_month = get_Qdate2.month() given_day = get_Qdate2.day() # if birth date is greater then given birth_month # then donot count this month and add 30 to the date so # as to subtract the date and get the remaining days month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] if (birth_day > given_day): given_month = given_month - 1 given_day = given_day + month[birth_month - 1] # if birth month exceeds given month, then # donot count this year and add 12 to the # month so that we can subtract and find out # the difference if (birth_month > given_month): given_year = given_year - 1 given_month = given_month + 12 # calculate day, month, year calculated_day = given_day - birth_day calculated_month = given_month - birth_month calculated_year = given_year - birth_year # setting text to the result self.result.setText(str(calculated_day) + " Day(s), " + str(calculated_month) + " Month(s), " + str(calculated_year) + " Year(s)") # create pyqt5 app App = QApplication(sys.argv) # create the instance of our Window window = Window() # start the app sys.exit(App.exec())
Producción :
Publicación traducida automáticamente
Artículo escrito por rakshitarora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA