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