En este artículo veremos cómo podemos crear una calculadora de proporción de plata usando PyQt5. En matemáticas, dos cantidades están en la razón de plata si la razón de la suma de la menor y el doble de la mayor de esas cantidades, a la cantidad mayor, es la misma que la razón de la mayor a la menor. A continuación se muestra cómo se verá la calculadora de proporción de plata
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. A continuación se muestra el comando para instalar el PyQt5
pip install PyQt5
Concepto:
a continuación se muestra la fórmula para calcular la proporción de plata
A/B = 1 + ?2
Aquí A es la longitud más grande y B es la más corta, es decir, la segunda parte de la longitud, tanto A como B deben ser mayores que cero.
Pasos de implementación de la GUI:
1. Cree una etiqueta de encabezado que muestre el nombre de la calculadora
2. Cree dos botones de radio para seleccionar entre la primera y la segunda longitud
3. Cree dos casillas para que el usuario ingrese la longitud específica
4. Cree un botón pulsador para calcular el otro valores de acuerdo con la proporción áurea
5. Cree una etiqueta para mostrar los valores calculados
Implementación de back-end:
1. Inicialmente deshabilite todos los cuadros giratorios
2. Agregue la misma acción a ambos botones de
opción 3. Dentro del método del botón de opción, verifique qué botón de opción está marcado
4. De acuerdo con el botón de radio marcado, active el cuadro de número correspondiente y deshabilite el otro cuadro de número
5. También asigne los valores de las banderas de acuerdo con el botón de radio seleccionado
6. Agregue la misma acción a ambos cuadros de selección
7. Dentro de la acción del cuadro de selección, verifique qué cuadro de selección está habilitado y haga que el valor de otro cuadro de selección sea cero
8. Agregue acción al botón pulsador
9. Dentro de la acción del botón, verifique la bandera de acuerdo con la bandera con la ayuda de la fórmula de proporción de plata, calcule la otra longitud
10. Formatee la longitud calculada y muestre la longitud con la ayuda de la etiqueta de resultado
A continuación se muestra la implementación.
Python3
# 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 = 430 # 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("Silver Ratio Calculator", self) head.setWordWrap(True) # 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 radio button self.length1 = QRadioButton("First Length (A)", self) # setting geometry self.length1.setGeometry(50, 90, 140, 40) # setting font self.length1.setFont(QFont('Times', 9)) # creating a spin box self.l1 = QSpinBox(self) self.l1.setMaximum(999999) # setting geometry to the spin box self.l1.setGeometry(200, 90, 160, 40) # setting font self.l1.setFont(QFont('Times', 9)) # setting alignment self.l1.setAlignment(Qt.AlignCenter) # creating a radio button self.length2 = QRadioButton("Second Length (B)", self) # setting geometry self.length2.setGeometry(50, 150, 145, 40) # setting font self.length2.setFont(QFont('Times', 9)) # creating a spin box self.l2 = QSpinBox(self) self.l2.setMaximum(999999) # setting geometry to the spin box self.l2.setGeometry(200, 150, 160, 40) # setting font self.l2.setFont(QFont('Times', 9)) # setting alignment self.l2.setAlignment(Qt.AlignCenter) # adding same action to all the radio button self.length1.clicked.connect(self.radio_method) self.length2.clicked.connect(self.radio_method) # adding same action to all the spin box self.l1.valueChanged.connect(self.spin_method) self.l2.valueChanged.connect(self.spin_method) # making all the spin box disabled self.l1.setDisabled(True) self.l2.setDisabled(True) # creating a push button calculate = QPushButton("Calculate", self) # setting geometry to the push button calculate.setGeometry(100, 270, 200, 40) # adding action to the button calculate.clicked.connect(self.calculate) # adding color effect to the push button color = QGraphicsColorizeEffect() color.setColor(Qt.blue) calculate.setGraphicsEffect(color) # creating a label to show result self.result = QLabel(self) # setting properties to result label self.result.setAlignment(Qt.AlignCenter) # setting geometry self.result.setGeometry(50, 330, 300, 70) # making it multi line self.result.setWordWrap(True) # setting stylesheet # adding border and background self.result.setStyleSheet("QLabel" "{" "border : 3px solid black;" "background : white;" "}") # setting font self.result.setFont(QFont('Arial', 11)) # method called by the radio buttons def radio_method(self): # checking who is checked and who is unchecked # if first radio button is checked if self.length1.isChecked(): # making first spin box enable self.l1.setEnabled(True) # making rest two spin box disable self.l2.setDisabled(True) # assigning flags self.check1 = True self.check2 = False elif self.length2.isChecked(): # making second spin box enable self.l2.setEnabled(True) # making rest two spin box disable self.l1.setDisabled(True) # assigning flags self.check1 = False self.check2 = True def spin_method(self): # finding who called the method if self.l1.isEnabled(): # setting current values self.l2.setValue(0) elif self.l2.isEnabled(): # setting current values self.l1.setValue(0) def calculate(self): # silver ratio value silver = 2.414 # if first value is selected if self.check1 == True: # getting spin box value A = self.l1.value() # calculating smaller length B = A / silver elif self.check2 == True: # getting spin box value B = self.l2.value() # calculating larger length A = B * silver # formatting values upto two decimal A = "{:.2f}".format(A) B = "{:.2f}".format(B) # setting text to the label self.result.setText("A = " + str(A) + ", B = " + str(B)) # 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