Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- #
- """
- Como hacer un portable:
- 1) Desde la línea de comandos de Windows o la shell de *nix instalan pyinstaller
- python -m pip install pyinstaller
- 2) Navegan hasta la carpeta donde tienen el script y ejecutan desde la línea de órdenes
- pyinstaller --onefile --noconsole <nombre_del_script>
- """
- # Calculadora gráfica
- import tkinter as tk
- from math import pi, factorial, sqrt
- def clic(tecla):
- global calculo_consola
- calculo_consola += tecla
- calculo.set(calculo_consola)
- def limpiar_pantalla():
- global calculo_consola
- calculo.set("0")
- calculo_consola = ""
- def hacer_cuenta():
- global calculo_consola
- try:
- resultado = eval(calculo_consola)
- except Exception:
- limpiar_pantalla()
- resultado = "ERROR"
- calculo.set(str(resultado))
- def borrar_caracter():
- global calculo_consola
- calculo_consola = calculo_consola[:-1]
- if calculo_consola == "":
- limpiar_pantalla()
- else:
- calculo.set(calculo_consola)
- # Variable del lado consola que almacena la cuenta a realizar
- calculo_consola = ""
- # ventana de la calculadora
- calc = tk.Tk()
- calc.config(width=390, height=600, bg="Light Steel Blue")
- calc.resizable(False,False)
- calc.title("Calculadora ACME")
- # Creo la variable para mostrar en la pantalla
- calculo = tk.StringVar()
- # inicializo la pantalla
- limpiar_pantalla()
- # pantalla de la calculadora
- pantalla = tk.Entry(
- font = ('arial',20,'bold'),
- width = 20,
- bd = 18,
- justify = 'right',
- state = tk.DISABLED,
- textvariable = calculo
- )
- pantalla.place(x=20, y=50)
- # teclas
- ancho = 7
- alto = 2
- relieve = 3
- letra = ('sans',11)
- # tecla borrado hacia atras
- tecla = tk.Button(text="DEL", width=ancho, height=alto, bd=relieve, font=letra, bg="medium aquamarine", command=borrar_caracter)
- tecla.place(x=287, y=140)
- # primera fila: 1 2 3 +
- tecla = tk.Button(text="1", width=ancho, height=alto, bd=relieve, font=letra, command=lambda:clic("1"))
- tecla.place(x=17, y=200)
- tecla = tk.Button(text="2", width=ancho, height=alto, bd=relieve, font=letra, command=lambda:clic("2"))
- tecla.place(x=107, y=200)
- tecla = tk.Button(text="3", width=ancho, height=alto, bd=relieve, font=letra, command=lambda:clic("3"))
- tecla.place(x=197, y=200)
- tecla = tk.Button(text="+", width=ancho, height=alto, bd=relieve, font=letra, bg='steel blue', command=lambda:clic("+"))
- tecla.place(x=287, y=200)
- # segunda fila: 4 5 6 -
- tecla = tk.Button(text="4", width=ancho, height=alto, bd=relieve, font=letra, command=lambda:clic("4"))
- tecla.place(x=17, y=260)
- tecla = tk.Button(text="5", width=ancho, height=alto, bd=relieve, font=letra, command=lambda:clic("5"))
- tecla.place(x=107, y=260)
- tecla = tk.Button(text="6", width=ancho, height=alto, bd=relieve, font=letra, command=lambda:clic("6"))
- tecla.place(x=197, y=260)
- tecla = tk.Button(text="-", width=ancho, height=alto, bd=relieve, font=letra, bg='steel blue', command=lambda:clic("-"))
- tecla.place(x=287, y=260)
- # tercera fila: 7 8 9 x
- tecla = tk.Button(text="7", width=ancho, height=alto, bd=relieve, font=letra, command=lambda:clic("7"))
- tecla.place(x=17, y=320)
- tecla = tk.Button(text="8", width=ancho, height=alto, bd=relieve, font=letra, command=lambda:clic("8"))
- tecla.place(x=107, y=320)
- tecla = tk.Button(text="9", width=ancho, height=alto, bd=relieve, font=letra, command=lambda:clic("9"))
- tecla.place(x=197, y=320)
- tecla = tk.Button(text="x", width=ancho, height=alto, bd=relieve, font=letra, bg='steel blue', command=lambda:clic("*"))
- tecla.place(x=287, y=320)
- # cuarta fila: ( 0 ) /
- tecla = tk.Button(text="(", width=ancho, height=alto, bd=relieve, font=letra, bg="sky blue", command=lambda:clic("("))
- tecla.place(x=17, y=380)
- tecla = tk.Button(text="0", width=ancho, height=alto, bd=relieve, font=letra, command=lambda:clic("0"))
- tecla.place(x=107, y=380)
- tecla = tk.Button(text=")", width=ancho, height=alto, bd=relieve, font=letra, bg="sky blue", command=lambda:clic(")"))
- tecla.place(x=197, y=380)
- tecla = tk.Button(text="/", width=ancho, height=alto, bd=relieve, font=letra, bg='steel blue', command=lambda:clic("/"))
- tecla.place(x=287, y=380)
- # quinta fila: raiz, punto decimal, potencia, resto
- tecla = tk.Button(text="\u221A", width=ancho, height=alto, bd=relieve, font=letra, bg="sky blue", command=lambda:clic("sqrt("))
- tecla.place(x=17, y=440)
- tecla = tk.Button(text=".", width=ancho, height=alto, bd=relieve, font=letra, command=lambda:clic("."))
- tecla.place(x=107, y=440)
- tecla = tk.Button(text="POW", width=ancho, height=alto, bd=relieve, font=letra, bg="sky blue", command=lambda:clic("**"))
- tecla.place(x=197, y=440)
- tecla = tk.Button(text="%", width=ancho, height=alto, bd=relieve, font=letra, bg='sky blue', command=lambda:clic("%"))
- tecla.place(x=287, y=440)
- # sexta fila: CL, factorial pi =
- tecla = tk.Button(text="CL", width=ancho, height=alto, bd=relieve, font=letra, bg="medium aquamarine", command=limpiar_pantalla)
- tecla.place(x=17, y=500)
- tecla = tk.Button(text="!", width=ancho, height=alto, bd=relieve, font=letra, command=lambda:clic("factorial("))
- tecla.place(x=107, y=500)
- tecla = tk.Button(text="\u03C0", width=ancho, height=alto, bd=relieve, font=letra, bg="sky blue", command=lambda:clic(str(pi)))
- tecla.place(x=197, y=500)
- tecla = tk.Button(text="=", width=ancho, height=alto, bd=relieve, font=letra, bg='medium aquamarine', command=hacer_cuenta)
- tecla.place(x=287, y=500)
- tk.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment