Advertisement
teslariu

calculadora ACME

Oct 26th, 2022
931
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.93 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. #
  4. import tkinter as tk
  5. from math import sqrt, factorial, pi
  6.  
  7.  
  8.  
  9. #######  funciones ############
  10.  
  11. def limpieza():
  12.     global operacion
  13.     calculo.set("0")
  14.     operacion = ""
  15.  
  16.  
  17. def clic(tecla):
  18.     global operacion
  19.     operacion = operacion + tecla
  20.     calculo.set(operacion)
  21.    
  22.    
  23. def hacer_cuenta():
  24.     """Documentacion de la funcion"""
  25.     global operacion
  26.     try:
  27.         total = str(eval(operacion))
  28.     except Exception:
  29.         limpieza()
  30.         calculo.set("ERROR")
  31.     else:
  32.         calculo.set(total)
  33.         operacion = total
  34.    
  35.    
  36. def borrar_caracter():
  37.     global operacion
  38.     operacion = operacion[:-1]
  39.     if operacion:
  40.         calculo.set(operacion)
  41.     else:
  42.         calculo.set("0")
  43.    
  44.  
  45.  
  46.  
  47.  
  48. # Ventana que contiene la calculadora
  49. calculadora = tk.Tk()
  50. calculadora.title("Calculadora ACME")
  51. calculadora.config(width=390, height=600, bg="Light Steel Blue")
  52. calculadora.resizable(False,False)
  53. calculadora.iconbitmap("icono_calc.ico")
  54.  
  55.  
  56. # Creo dos variables: una para mostrar la cuenta en la pantalla y otra
  57. # para mostrar el cálculo de lado consola
  58. calculo = tk.StringVar()
  59. operacion = ""
  60.  
  61. # llamo a la función limpieza para inicializar la calculadora
  62. limpieza()
  63.  
  64. # creo la pantalla
  65. pantalla = tk.Entry(
  66.             font = ('arial',20,'bold'),
  67.             width = 20,
  68.             bd = 20,  # grosor del borde
  69.             bg = "powder blue",
  70.             justify = "right",
  71.             textvariable = calculo,
  72.             state = tk.DISABLED
  73. )
  74. pantalla.place(x=20, y=50)
  75.  
  76. # defino las dimensiones de las teclas y sus colores
  77. ancho = 9
  78. alto = 2
  79. color1 = "Steel Blue"
  80. color2 = "Steel Blue2"
  81. color3 = "Steel Blue3"
  82. color4 = "Steel Blue4"
  83. color5 = "Slategray4"
  84.  
  85.  
  86. ########## Teclas de la calculadora ##############################
  87. # tecla para borrar un caracter
  88. tecla = tk.Button(text="DEL", width=ancho, height=alto, bg=color4, command=borrar_caracter)
  89. tecla.place(x=287, y=140)
  90.  
  91.  
  92.  
  93.  
  94. ##### Primera fila: 1 2 3 +
  95. tecla = tk.Button(text="1", width=ancho, height=alto, command=lambda:clic("1"))
  96. tecla.place(x=17, y=200)
  97. tecla = tk.Button(text="2", width=ancho, height=alto, command=lambda:clic("2"))
  98. tecla.place(x=107, y=200)
  99. tecla = tk.Button(text="3", width=ancho, height=alto, command=lambda:clic("3"))
  100. tecla.place(x=197, y=200)
  101. tecla = tk.Button(text="+", width=ancho, height=alto, bg=color1, command=lambda:clic("+"))
  102. tecla.place(x=287, y=200)
  103.  
  104.  
  105. ##### Segunda fila: 4 5 6 -
  106. tecla = tk.Button(text="4", width=ancho, height=alto, command=lambda:clic("4"))
  107. tecla.place(x=17, y=260)
  108. tecla = tk.Button(text="5", width=ancho, height=alto, command=lambda:clic("5"))
  109. tecla.place(x=107, y=260)
  110. tecla = tk.Button(text="6", width=ancho, height=alto, command=lambda:clic("6"))
  111. tecla.place(x=197, y=260)
  112. tecla = tk.Button(text="-", width=ancho, height=alto, bg=color1, command=lambda:clic("-"))
  113. tecla.place(x=287, y=260)
  114.  
  115.  
  116. ##### Tercera fila: 7 8 9 x
  117. tecla = tk.Button(text="7", width=ancho, height=alto, command=lambda:clic("7"))
  118. tecla.place(x=17, y=320)
  119. tecla = tk.Button(text="8", width=ancho, height=alto, command=lambda:clic("8"))
  120. tecla.place(x=107, y=320)
  121. tecla = tk.Button(text="9", width=ancho, height=alto, command=lambda:clic("9"))
  122. tecla.place(x=197, y=320)
  123. tecla = tk.Button(text="x", width=ancho, height=alto, bg=color1, command=lambda:clic("*"))
  124. tecla.place(x=287, y=320)
  125.  
  126.  
  127. ##### Cuarta fila: ( 0 ) /
  128. tecla = tk.Button(text="(", width=ancho, height=alto, bg=color2, command=lambda:clic("("))
  129. tecla.place(x=17, y=380)
  130. tecla = tk.Button(text="0", width=ancho, height=alto, command=lambda:clic("0"))
  131. tecla.place(x=107, y=380)
  132. tecla = tk.Button(text=")", width=ancho, height=alto, bg=color2, command=lambda:clic(")"))
  133. tecla.place(x=197, y=380)
  134. tecla = tk.Button(text="/", width=ancho, height=alto, bg=color1, command=lambda:clic("/"))
  135. tecla.place(x=287, y=380)
  136.  
  137. ##### Quinta fila: raiz coma_decimal potencia resto
  138. tecla = tk.Button(text="\u221A", width=ancho, height=alto, bg=color3, command=lambda:clic("sqrt("))
  139. tecla.place(x=17, y=440)
  140. tecla = tk.Button(text=".", width=ancho, height=alto, command=lambda:clic("."))
  141. tecla.place(x=107, y=440)
  142. tecla = tk.Button(text="POW", width=ancho, height=alto, bg=color3, command=lambda:clic("**"))
  143. tecla.place(x=197, y=440)
  144. tecla = tk.Button(text="%", width=ancho, height=alto, bg=color3, command=lambda:clic("%"))
  145. tecla.place(x=287, y=440)
  146.  
  147.  
  148. ##### Sexta fila: Clear Factorial pi =
  149. tecla = tk.Button(text="CL", width=ancho, height=alto, bg=color4, command=limpieza)
  150. tecla.place(x=17, y=500)
  151. tecla = tk.Button(text="!", width=ancho, height=alto, bg=color3, command=lambda:clic("factorial("))
  152. tecla.place(x=107, y=500)
  153. tecla = tk.Button(text="\u03C0", width=ancho, height=alto, bg=color2, command=lambda:clic(str(pi)))
  154. tecla.place(x=197, y=500)
  155. tecla = tk.Button(text="=", width=ancho, height=alto, bg=color5, command=hacer_cuenta)
  156. tecla.place(x=287, y=500)
  157.  
  158. calculadora.mainloop()
  159.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement