PyQt5 – Calculadora de velocidad media

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 calculada

Implementació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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *