En este artículo veremos cómo podemos crear una calculadora de velocidad media usando PyQt5. La velocidad promedio de un objeto es la distancia total recorrida por el objeto dividida por el tiempo transcurrido para cubrir esa distancia, a continuación se muestra cómo se verá la calculadora de velocidad promedio
Concepto: Obtendremos el tiempo en forma de horas y minutos, y la distancia en forma de kilómetros, cuando el usuario presione el botón Calcular, primero verificaremos si se proporcionó una entrada no válida o no, si las entradas son correctas, convertiremos la Horas y minutos en horas y calcular la velocidad y mostrar la velocidad en la pantalla.
Pasos de implementación de GUI:
1. Cree una etiqueta de encabezado que muestre el nombre de la calculadora
2. Cree una etiqueta para mostrar al usuario cómo configurar las horas y los minutos
3. Cree dos objetos QSpinBox para obtener las horas y los minutos
4. Cree otra etiqueta para mostrar al usuario cómo configurar distancia, y correspondiente a la etiqueta, cree un QSpinBox para obtener la distancia
5. Cree un botón pulsador para calcular la velocidad promedio
6. Cree una etiqueta para mostrar la velocidad calculadaImplementación de back-end:
1. Establezca el valor máximo del cuadro giratorio de minutos en 60 y aumente el valor máximo del cuadro giratorio de distancia
2. Agregue acción al botón pulsador
3. Dentro de la acción del botón pulsador obtenga las horas, los minutos y la distancia desde las casillas giratorias
4. Compruebe si el valor de la distancia o el tiempo es cero y luego devuelva la función para que la acción deje de ejecutarse más
5. Convierta las horas y los minutos en horas y calcule la velocidad usando este tiempo
6. Muestre la velocidad en la pantalla con la ayuda de etiqueta
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("Python ") # width of window self.w_width = 400 # height of window self.w_height = 400 # 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("Average Speed Calculator", self) # setting geometry to the head head.setGeometry(0, 10, 400, 60) # 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 t_label = QLabel("Hours and Minutes", self) # setting properties to the label t_label.setAlignment(Qt.AlignCenter) t_label.setGeometry(20, 100, 170, 40) t_label.setStyleSheet("QLabel" "{" "border : 2px solid black;" "background : rgba(70, 70, 70, 35);" "}") t_label.setFont(QFont('Times', 9)) # creating a spin box to get the hours self.hours = QSpinBox(self) # setting geometry to the spin box self.hours.setGeometry(200, 100, 90, 40) # setting font and alignment self.hours.setFont(QFont('Times', 9)) self.hours.setAlignment(Qt.AlignCenter) # creating a spin box to get the minutes self.minutes = QSpinBox(self) # setting geometry to the spin box self.minutes.setGeometry(290, 100, 90, 40) # setting maximum value of minutes spin box self.minutes.setMaximum(60) # setting font and alignment self.minutes.setFont(QFont('Times', 9)) self.minutes.setAlignment(Qt.AlignCenter) # creating a label d_label = QLabel("Distance (Km)", self) # setting properties to the label d_label.setAlignment(Qt.AlignCenter) d_label.setGeometry(20, 150, 170, 40) d_label.setStyleSheet("QLabel" "{" "border : 2px solid black;" "background : rgba(70, 70, 70, 35);" "}") d_label.setFont(QFont('Times', 9)) # creating a spin box to get the distance self.distance = QSpinBox(self) # setting geometry to the spin box self.distance.setGeometry(200, 150, 180, 40) # setting maximum value of minutes spin box self.distance.setMaximum(99999999) # setting font and alignment self.distance.setFont(QFont('Times', 9)) self.distance.setAlignment(Qt.AlignCenter) # creating a push button calculate = QPushButton("Calculate Speed", self) # setting geometry to the push button calculate.setGeometry(125, 220, 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(50, 300, 300, 60) self.result.setStyleSheet("QLabel" "{" "border : 3px solid black;" "background : white;" "}") self.result.setFont(QFont('Arial', 11)) def calculate_action(self): # getting hours hours = self.hours.value() # getting minutes minutes = self.minutes.value() # getting distance distance = self.distance.value() # checking if time value is zero or distance is zero # return the function i.e do nothing if distance == 0: return elif hours == 0 and minutes == 0: return # converting minutes into hours # and adding it to hours i.e total time time = hours + minutes / 60 # calculate the speed speed = distance / time # setting formatting of the speed speed = '%.2f' % speed # setting text tot he label self.result.setText(str(speed) + " Km / Hr") # 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