Calculadora Con PyQt5

por | 9 julio, 2014

Hola

Estos días he estado ocupado aprendiendo PyQt5. No parece difícil, de hecho es la primera que con un lenguaje de programación logro enterarme más de cómo hacer aplicaciones ventana. No me extraña, programar con Python simplifica mucho las cosas, haces lo mismo pero el lenguaje es mucho más claro y simplificado. Si lo tuviese que hacer con QT y C++ no se si habría llegado al objetivo.

En fin, el programa es una sencilla pero completa calculadora científica, totalmente funcional; no como muchas que hay por ahí en tutoriales que son un desastre. La calculadora cuenta con cálculos trigonométricos, hiperbólicos: senos, arcosenos, senos hiperbólicos, cosecantes, etc. Transforma radianes a grados, minutos y segundos. Luego tiene los logaritmos, las exponenciales y las raíces cuadradas, cúbicas y n-esima. Calcula la potencia n-ésima de un número y el inverso de un número. Obviamente suma, resta, divide y multiplica.

Lleva incorporada 2 teclas para calcular combinaciones y variaciones de n elementos. También calcula el factorial, el porcentaje y el resto de una división. He incluido tres teclas que son 3 constantes matemáticas conocidas: pi, e y el número áureo.

En la pantalla de resultados aparecen mensajes de error matemáticos cuando se producen, como la división por cero.

En Python realizar el sen(180) directamente no da cero exacto debido a que trabaja con pi, igual pasa con cos(90), etc; en el código del programa he añadido las instrucciones necesarias para que no pase esto. Además, al pasar a grados sexagesimales he añadido una función para que los reduzca todos a la primera vuelta y en sentido positivo.

Seguro que faltan más cosas, como los paréntesis y resultados en forma de fracciones, eso vendrá en una segunda versión mejorada estoy todavía en el primer escalón de aprendizaje

Para que la calculadora sea lo más vistosa posible le he cambiado su aspecto utilizando CSS, He añadido un fichero CSS al código para cambiarle su aspecto: color de fondo, botones con bordes redondeados, efecto hover en los botones, cambio de estilo en los tooltips, etc.  También lo he hecho para el MessageBox para el About del programa.

La plantilla del programa la he realizado con QtDesigner (menos la del QMessageBox que lo he inyectado directamente al código) así que el fichero ui que me genera lo he pasado a código python. No he puesto directamente los códigos css en QtDesigner, es mucho mejor hacerte un fichero css a parte y llamarlo desde el código de tu clase python.

Las teclas de caracteres matemáticos como el signo de la raíz cuadrada lo he realizado insertando directamente su código unicode utf-8 para que no hayan problemas de compatibilidad.

Ahora mismo lo que me falta por hacer es poder hacerle un ejecutable para Windows, lo he intentado con QtDeploy pero ni caso, y hay muy poca información sobre el tema. Para Linux no hace falta hacer gran cosa para que funcione, tan sólo instalar PyQt5 (sus librerías de desarrollo) y listo, ya que no utilizo paquetes de terceros para el código. Me he apañado con las librerías Math y Decimal. La de Decimal la recomiendo muy mucho para utilizarla, te soluciona muchos quebraderos de cabeza para la obtención de resultados. A mi me ha servido mucho para que cuando haces, por ejemplo; 6 + 8 aparezca en la calculadora 14 y no 14.0.

La verdad es que me ha costado mucho realizar el programa porque para aprender PyQt lo he hecho con un libro basado en PyQt4, con lo que las señales y conexiones no se hacen igual, ahora con PyQt5 son mucho más sencillas. Para lo del CSS he tenido que googlear mogollón, para ver cuál era la mejor forma de añadirlo al código, y también pensar por mi cuenta cuál era la mejor forma, o la que me funcionase. Lo de los símbolos matemáticos también me ha costado mucho solucionarlo correctamente. Pero lo que más me esta costando es lo del qtdeploy, no hay casi nada de información, y la poca que hay  no me entero un carajo

Todo el código lo puedes descargar con total libertad desde mi repositorio de GitHub, también puedes colaborar en su mejora

Una pequeña muestra de la calculadora en vídeo garrulo

embedded by Embedded Video

Saludos

3 pensamientos en “Calculadora Con PyQt5

  1. Pingback: Bitacoras.com

  2. José Cifuentes

    Felicitaciones, un muy buen trabajo!
    Saludos

Los comentarios están cerrados.