Advertisement
teslariu

calculadoraACME

Apr 11th, 2022
858
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. #
  4.  
  5. # Script que implementa una calculadora gráfica
  6.  
  7. import tkinter as tk
  8. from math import sqrt, factorial, pi
  9.  
  10. ###### funciones #######################
  11.  
  12. def clic(tecla):
  13.     global cuenta
  14.     cuenta  = cuenta + tecla
  15.     calculo.set(cuenta)
  16.    
  17.    
  18. def limpieza():
  19.     global cuenta
  20.     cuenta = ""
  21.     calculo.set("0")
  22.    
  23.    
  24. def hacer_cuenta():
  25.     global cuenta
  26.     try:
  27.         total = eval(cuenta)
  28.     except Exception:
  29.         limpieza()
  30.         total = "ERROR"
  31.     calculo.set(total)
  32.    
  33.  
  34. def borrar_caracter():
  35.     global cuenta
  36.     lista = []
  37.     for c in cuenta:
  38.         lista.append(c)
  39.     del lista[-1]
  40.     cuenta = "".join(lista)
  41.     calculo.set(cuenta)
  42.  
  43.  
  44.  
  45. ######  ventana #######################
  46. ventana = tk.Tk()
  47. ventana.title("Calculadora ACME")
  48. ventana.config(width=390, height=600, bg="light steel blue")
  49. ventana.resizable(0,0)
  50.  
  51. # creo una variable del lado consola para realizar el cálculo
  52. cuenta = ""
  53.  
  54. # creo una variable del lado gráfico para mostrar el cálculo en la pantalla
  55. calculo = tk.StringVar()
  56.  
  57. limpieza()
  58.  
  59. # creamos una pantalla
  60. pantalla = tk.Entry(
  61.                 font = ('arial',20,'bold'),
  62.                 width = 20,
  63.                 bd = 25,
  64.                 bg = "powder blue",
  65.                 justify = "right",
  66.                 state = tk.DISABLED,
  67.                 textvariable = calculo,
  68.                 )
  69. pantalla.place(x=20,y=50)
  70.  
  71. # defino las dimensiones de las teclas
  72. ancho = 10
  73. alto = 2
  74.  
  75. ##### teclas  ###############
  76.  
  77. # tecla para borrar un caracter
  78. tecla = tk.Button(text="DEL", width=ancho, height=alto, bg="medium aquamarine", command=borrar_caracter)
  79. tecla.place(x=287, y=140)
  80.  
  81.  
  82. #### primera fila : 1 2 3 +
  83. tecla = tk.Button(text="1", width=ancho, height=alto, command=lambda:clic("1"))
  84. tecla.place(x=17, y=200)
  85. tecla = tk.Button(text="2", width=ancho, height=alto, command=lambda:clic("2"))
  86. tecla.place(x=107, y=200)
  87. tecla = tk.Button(text="3", width=ancho, height=alto, command=lambda:clic("3"))
  88. tecla.place(x=197, y=200)
  89. tecla = tk.Button(text="+", width=ancho, height=alto, bg="SteelBlue2", command=lambda:clic("+"))
  90. tecla.place(x=287, y=200)
  91.  
  92. #### segunda fila : 4 5 6 -
  93. tecla = tk.Button(text="4", width=ancho, height=alto, command=lambda:clic("4"))
  94. tecla.place(x=17, y=260)
  95. tecla = tk.Button(text="5", width=ancho, height=alto, command=lambda:clic("5"))
  96. tecla.place(x=107, y=260)
  97. tecla = tk.Button(text="6", width=ancho, height=alto, command=lambda:clic("6"))
  98. tecla.place(x=197, y=260)
  99. tecla = tk.Button(text="-", width=ancho, height=alto, bg="SteelBlue2", command=lambda:clic("-"))
  100. tecla.place(x=287, y=260)
  101.  
  102. #### tercera fila : 7 8 9 x
  103. tecla = tk.Button(text="7", width=ancho, height=alto, command=lambda:clic("7"))
  104. tecla.place(x=17, y=320)
  105. tecla = tk.Button(text="8", width=ancho, height=alto, command=lambda:clic("8"))
  106. tecla.place(x=107, y=320)
  107. tecla = tk.Button(text="9", width=ancho, height=alto, command=lambda:clic("9"))
  108. tecla.place(x=197, y=320)
  109. tecla = tk.Button(text="x", width=ancho, height=alto, bg="SteelBlue2", command=lambda:clic("*"))
  110. tecla.place(x=287, y=320)
  111.  
  112. #### cuarta fila : ( 0 ) /
  113. tecla = tk.Button(text="(", width=ancho, height=alto, bg="sky blue", command=lambda:clic("("))
  114. tecla.place(x=17, y=380)
  115. tecla = tk.Button(text="0", width=ancho, height=alto, command=lambda:clic("0"))
  116. tecla.place(x=107, y=380)
  117. tecla = tk.Button(text=")", width=ancho, height=alto, bg="sky blue", command=lambda:clic(")"))
  118. tecla.place(x=197, y=380)
  119. tecla = tk.Button(text="/", width=ancho, height=alto, bg="SteelBlue2", command=lambda:clic("/"))
  120. tecla.place(x=287, y=380)
  121.  
  122. #### quinta fila : raiz, coma decimal potencia resto
  123. tecla = tk.Button(text="\u221a", width=ancho, height=alto, bg="SteelBlue2", command=lambda:clic("sqrt("))
  124. tecla.place(x=17, y=440)
  125. tecla = tk.Button(text=".", width=ancho, height=alto, command=lambda:clic("."))
  126. tecla.place(x=107, y=440)
  127. tecla = tk.Button(text="POT", width=ancho, height=alto, bg="SteelBlue2", command=lambda:clic("**"))
  128. tecla.place(x=197, y=440)
  129. tecla = tk.Button(text="%", width=ancho, height=alto, bg="SteelBlue2", command=lambda:clic("%"))
  130. tecla.place(x=287, y=440)
  131.  
  132. #### sexta fila : Clear, factorial PI =
  133. tecla = tk.Button(text="CL", width=ancho, height=alto, bg="sky blue", command=limpieza)
  134. tecla.place(x=17, y=500)
  135. tecla = tk.Button(text="!", width=ancho, height=alto, bg="sky blue", command=lambda:clic("factorial("))
  136. tecla.place(x=107, y=500)
  137. tecla = tk.Button(text="\u03c0", width=ancho, height=alto, bg="sky blue", command=lambda:clic(str(pi)))
  138. tecla.place(x=197, y=500)
  139. tecla = tk.Button(text="=", width=ancho, height=alto, bg="SteelBlue2", command=hacer_cuenta)
  140. tecla.place(x=287, y=500)
  141.  
  142. ventana.mainloop()
  143.  
Advertisement
RAW Paste Data Copied
Advertisement