Requisito previo: Introducción a pyqt-5
En este artículo, veremos cómo podemos crear una calculadora de un cuarto (1/4) de milla usando PyQt5 . La calculadora de un cuarto de milla se usa para determinar la velocidad terminal (velocidad trampa) y el tiempo transcurrido (ET) de un cuarto de milla de un vehículo en función de su peso y potencia.
La imagen de abajo muestra cómo se ve la calculadora de 1/4 de milla:
La calculadora del cuarto de milla emplea tres ecuaciones empíricas distintas para determinar el tiempo transcurrido (ET) del cuarto de milla. Estos son los siguientes:
1. Ecuación de Roger Huntington:
Time = 6.290 × (Weight / Power)^(1/3)
2. Ecuaciones de Geoffrey Fox:
Time = 6.269 × (Weight / Power)^(1/3)
3. Ecuaciones de Patrick Hale:
Time = 5.825 × (Weight / Power)^(1/3)
Nota: Aquí el peso está en libras (lb) y la potencia en unidades de caballos de fuerza (hp).
Pasos de implementación de la GUI:
1. Cree una etiqueta de encabezado que muestre el nombre de la calculadora
2. Cree un par de etiquetas y cuadros combinados para seleccionar la ecuación, una etiqueta para mostrar lo que el usuario tiene que seleccionar y un cuadro combinado para seleccionar
3. De manera similar, cree un par de etiquetas y edite la línea para obtener el peso y la potencia del automóvil
4. Cree un botón pulsador para calcular el tiempo
5. Cree una etiqueta para mostrar el tiempo calculado
Implementación de back-end :
1 . Hacer que el cuadro combinado no sea editable
2. Hacer la edición de línea para aceptar solo el número como entrada
3. Agregar acción al botón
4. Dentro de la acción del botón obtener el texto de las ediciones de línea
5. Verificar si el texto de edición de línea es vacío o cero y luego regrese para que la función no se ejecute más
6. Convierta el valor del texto en un número entero
7 . Obtenga la opción seleccionada del cuadro combinado y establezca el valor constante de acuerdo con ella
8. Calcule el tiempo y muestre este valor a través de la etiqueta
A continuación se muestra la implementación:
Python3
# importing required 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("Python ") # width of window self.w_width = 400 # height of window self.w_height = 450 # setting geometry self.setGeometry(100, 100, self.w_width, self.w_height) # calling method self.UiComponents() # showing all the widgets self.show() # method for components def UiComponents(self): # creating head label head = QLabel("1/4 Mile Calculator", self) # setting geometry to the head head.setGeometry(0, 10, 400, 60) # setting font font = QFont('Times', 15) 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) # setting color effect to the head color = QGraphicsColorizeEffect(self) color.setColor(Qt.darkCyan) head.setGraphicsEffect(color) # creating a label e_label = QLabel("Equation", self) # setting properties label e_label.setAlignment(Qt.AlignCenter) e_label.setGeometry(20, 100, 170, 40) e_label.setStyleSheet("QLabel" "{" "border : 2px solid black;" "background : rgba(70, 70, 70, 35);" "}") e_label.setFont(QFont('Times', 9)) # creating a combo box to selected equation self.equation = QComboBox(self) # adding items to the combo box items = ["Huntington", "Fox", "Hale"] self.equation.addItems(items) # setting properties to the combo box self.equation.setFont(QFont('Times', 9)) self.equation.setGeometry(200, 100, 180, 40) self.equation.setEditable(False) # creating a label w_label = QLabel("Car Weight (lb)", self) # setting properties to the label w_label.setAlignment(Qt.AlignCenter) w_label.setGeometry(20, 150, 170, 40) w_label.setStyleSheet("QLabel" "{" "border : 2px solid black;" "background : rgba(70, 70, 70, 35);" "}") w_label.setFont(QFont('Times', 9)) # creating a QLineEdit object self.weight = QLineEdit(self) # accepting only number as input onlyInt = QIntValidator() self.weight.setValidator(onlyInt) # setting properties to the line edit self.weight.setGeometry(200, 150, 180, 40) self.weight.setAlignment(Qt.AlignCenter) self.weight.setFont(QFont('Times', 9)) # creating a label p_label = QLabel("Engine Power (hp) ", self) # setting properties to the years label p_label.setAlignment(Qt.AlignCenter) p_label.setGeometry(20, 200, 170, 40) p_label.setStyleSheet("QLabel" "{" "border : 2px solid black;" "background : rgba(70, 70, 70, 35);" "}") p_label.setFont(QFont('Times', 9)) # creating a QLineEdit object self.power = QLineEdit(self) # accepting only number as input onlyInt = QIntValidator() self.power.setValidator(onlyInt) # setting properties to the line edit self.power.setGeometry(200, 200, 180, 40) self.power.setAlignment(Qt.AlignCenter) self.power.setFont(QFont('Times', 9)) # creating a push button calculate = QPushButton("Calculate Time", self) # setting geometry to the push button calculate.setGeometry(125, 270, 150, 40) # adding action to the calculate button calculate.clicked.connect(self.calculate_action) # creating a label to show percentile self.result = QLabel(self) # setting properties to result label self.result.setAlignment(Qt.AlignCenter) self.result.setGeometry(30, 340, 340, 80) self.result.setWordWrap(True) self.result.setStyleSheet("QLabel" "{" "border : 3px solid black;" "background : white;" "}") self.result.setFont(QFont('Arial', 11)) # method for calculating the # quarter-mile elapsed time (ET) def calculate_action(self): # getting weight of car weight = self.weight.text() # getting power of engine power = self.power.text() # if no input is given close the function if len(weight) == 0 or len(power) == 0: return # converting weight into integer weight = int(weight) # converting power into integer power = int(power) # if user enter total value as 0 # return the function if power == 0 or weight == 0: return # getting the selected equation index equation = self.equation.currentIndex() # setting constant value according to the equation # Roger Huntington's constant if equation == 0: constant = 6.290 # Geoffrey Fox's constant elif equation == 1: constant = 6.269 # Patrick Hale's constant else: constant = 5.825 # calculating the time result = constant * ((weight/power)**(1/3)) # formatting the time result = "{:.2f}".format(result) # setting text to the result label self.result.setText("1/4 Mile Elapsed Time : " + str(result) + " seconds") # 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