Calculadora de construcción usando PyQt5 en Python

En este artículo veremos cómo podemos crear una calculadora usando PyQt5 . Una calculadora es algo que se usa para hacer cálculos matemáticos, en particular, un pequeño dispositivo electrónico con un teclado y una pantalla visual. a continuación se muestra cómo se verá la calculadora
 

Pasos de implementación de GUI 

  • Cree una etiqueta para mostrar los números y la salida y establezca su geometría 
  • Alinee el texto de la etiqueta desde el lado derecho y aumente el tamaño de la fuente. 
  • Cree pulsadores para los números del 0 al 9 y configure su geometría en el orden correcto 
  • Cree un ejemplo de botón pulsador de operador para sumas, restas, etc. 
  • Agregue un efecto de color al botón de igual para resaltarlo

Pasos de implementación de back-end

  • Agregar acción a cada botón 
  • Dentro de las acciones de cada botón excepto la acción igual a, anexar el texto de la etiqueta con el número respectivo o el operador 
  • Dentro de los iguales a la acción, obtenga el texto de la etiqueta e inicie el bloque try excepto 
  • Dentro del bloque de prueba, use el método eval en el texto de la etiqueta para obtener la respuesta y establecer la respuesta en la etiqueta. 
  • Dentro del bloque de excepción, establezca «Entrada incorrecta» como texto 
  • Para la acción de borrar, elimine el último carácter de la etiqueta y para la acción de borrar, deje todo el texto en blanco.

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 ")
 
        # setting geometry
        self.setGeometry(100, 100, 360, 350)
 
        # calling method
        self.UiComponents()
 
        # showing all the widgets
        self.show()
 
        # method for widgets
    def UiComponents(self):
 
        # creating a label
        self.label = QLabel(self)
 
        # setting geometry to the label
        self.label.setGeometry(5, 5, 350, 70)
 
        # creating label multi line
        self.label.setWordWrap(True)
 
        # setting style sheet to the label
        self.label.setStyleSheet("QLabel"
                                 "{"
                                 "border : 4px solid black;"
                                 "background : white;"
                                 "}")
 
        # setting alignment to the label
        self.label.setAlignment(Qt.AlignRight)
 
        # setting font
        self.label.setFont(QFont('Arial', 15))
 
 
        # adding number button to the screen
        # creating a push button
        push1 = QPushButton("1", self)
 
        # setting geometry
        push1.setGeometry(5, 150, 80, 40)
 
        # creating a push button
        push2 = QPushButton("2", self)
 
        # setting geometry
        push2.setGeometry(95, 150, 80, 40)
 
        # creating a push button
        push3 = QPushButton("3", self)
 
        # setting geometry
        push3.setGeometry(185, 150, 80, 40)
 
        # creating a push button
        push4 = QPushButton("4", self)
 
        # setting geometry
        push4.setGeometry(5, 200, 80, 40)
 
        # creating a push button
        push5 = QPushButton("5", self)
 
        # setting geometry
        push5.setGeometry(95, 200, 80, 40)
 
        # creating a push button
        push6 = QPushButton("5", self)
 
        # setting geometry
        push6.setGeometry(185, 200, 80, 40)
 
        # creating a push button
        push7 = QPushButton("7", self)
 
        # setting geometry
        push7.setGeometry(5, 250, 80, 40)
 
        # creating a push button
        push8 = QPushButton("8", self)
 
        # setting geometry
        push8.setGeometry(95, 250, 80, 40)
 
        # creating a push button
        push9 = QPushButton("9", self)
 
        # setting geometry
        push9.setGeometry(185, 250, 80, 40)
 
        # creating a push button
        push0 = QPushButton("0", self)
 
        # setting geometry
        push0.setGeometry(5, 300, 80, 40)
 
        # adding operator push button
        # creating push button
        push_equal = QPushButton("=", self)
 
        # setting geometry
        push_equal.setGeometry(275, 300, 80, 40)
 
        # adding equal button a color effect
        c_effect = QGraphicsColorizeEffect()
        c_effect.setColor(Qt.blue)
        push_equal.setGraphicsEffect(c_effect)
 
        # creating push button
        push_plus = QPushButton("+", self)
 
        # setting geometry
        push_plus.setGeometry(275, 250, 80, 40)
 
        # creating push button
        push_minus = QPushButton("-", self)
 
        # setting geometry
        push_minus.setGeometry(275, 200, 80, 40)
 
        # creating push button
        push_mul = QPushButton("*", self)
 
        # setting geometry
        push_mul.setGeometry(275, 150, 80, 40)
 
        # creating push button
        push_div = QPushButton("/", self)
 
        # setting geometry
        push_div.setGeometry(185, 300, 80, 40)
 
        # creating push button
        push_point = QPushButton(".", self)
 
        # setting geometry
        push_point.setGeometry(95, 300, 80, 40)
 
 
        # clear button
        push_clear = QPushButton("Clear", self)
        push_clear.setGeometry(5, 100, 200, 40)
 
        # del one character button
        push_del = QPushButton("Del", self)
        push_del.setGeometry(210, 100, 145, 40)
 
        # adding action to each of the button
        push_minus.clicked.connect(self.action_minus)
        push_equal.clicked.connect(self.action_equal)
        push0.clicked.connect(self.action0)
        push1.clicked.connect(self.action1)
        push2.clicked.connect(self.action2)
        push3.clicked.connect(self.action3)
        push4.clicked.connect(self.action4)
        push5.clicked.connect(self.action5)
        push6.clicked.connect(self.action6)
        push7.clicked.connect(self.action7)
        push8.clicked.connect(self.action8)
        push9.clicked.connect(self.action9)
        push_div.clicked.connect(self.action_div)
        push_mul.clicked.connect(self.action_mul)
        push_plus.clicked.connect(self.action_plus)
        push_point.clicked.connect(self.action_point)
        push_clear.clicked.connect(self.action_clear)
        push_del.clicked.connect(self.action_del)
 
 
    def action_equal(self):
 
        # get the label text
        equation = self.label.text()
 
        try:
            # getting the ans
            ans = eval(equation)
 
            # setting text to the label
            self.label.setText(str(ans))
 
        except:
            # setting text to the label
            self.label.setText("Wrong Input")
 
    def action_plus(self):
        # appending label text
        text = self.label.text()
        self.label.setText(text + " + ")
 
    def action_minus(self):
        # appending label text
        text = self.label.text()
        self.label.setText(text + " - ")
 
    def action_div(self):
        # appending label text
        text = self.label.text()
        self.label.setText(text + " / ")
 
    def action_mul(self):
        # appending label text
        text = self.label.text()
        self.label.setText(text + " * ")
 
    def action_point(self):
        # appending label text
        text = self.label.text()
        self.label.setText(text + ".")
 
    def action0(self):
        # appending label text
        text = self.label.text()
        self.label.setText(text + "0")
 
    def action1(self):
        # appending label text
        text = self.label.text()
        self.label.setText(text + "1")
 
    def action2(self):
        # appending label text
        text = self.label.text()
        self.label.setText(text + "2")
 
    def action3(self):
        # appending label text
        text = self.label.text()
        self.label.setText(text + "3")
 
    def action4(self):
        # appending label text
        text = self.label.text()
        self.label.setText(text + "4")
 
    def action5(self):
        # appending label text
        text = self.label.text()
        self.label.setText(text + "5")
 
    def action6(self):
        # appending label text
        text = self.label.text()
        self.label.setText(text + "6")
 
    def action7(self):
        # appending label text
        text = self.label.text()
        self.label.setText(text + "7")
 
    def action8(self):
        # appending label text
        text = self.label.text()
        self.label.setText(text + "8")
 
    def action9(self):
        # appending label text
        text = self.label.text()
        self.label.setText(text + "9")
 
    def action_clear(self):
        # clearing the label text
        self.label.setText("")
 
    def action_del(self):
        # clearing a single digit
        text = self.label.text()
        print(text[:len(text)-1])
        self.label.setText(text[:len(text)-1])
 
 
# 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 *