Mi Primera Calculadora
Python
Publicado el 4 de Mayo del 2020 por Jose Manuel (3 códigos)
4.054 visualizaciones desde el 4 de Mayo del 2020
from tkinter import*
import tkinter.messagebox
import math
raiz=Tk()
raiz.title("Calculadora 1.0")
raiz.iconbitmap("descarga.ico")
raiz.geometry("220x200")
miFrame=Frame(raiz)
miFrame.pack()
#----------Definicion de Variables------------------
operacion=""
resetPanatalla=False
resultado=0
numeroPantalla=StringVar()
#------ Definicion de funciones-----------------
def mensaje():
tkinter.messagebox.showinfo('Calculadora 1.0','Mi Primera Calculadora mas info en josemlperez2001@gmail.com')
def resetBoton():
global operacion
global resetPanatalla
numeroPantalla.set(" ")
operacion=0
def pulsaNum(num):#-- Funcion para limpiar pantalla cuando pulsa boton de operacion
global operacion
global resetPanatalla
if resetPanatalla!=False:
numeroPantalla.set(num)
resetPanatalla=False
else:
numeroPantalla.set(numeroPantalla.get() + num ) #--- Funcion para escribir varios num. en pantalla
#---------------------Reultado Final-----------------------------------------
def resultadoFinal(): #-------------En esta funcion es donde se realizan las operaciones------------------
global resultado
global operacion
global contador_resta
global contador_multi
global contador_divide
if operacion=="suma":
numeroPantalla.set(resultado+int(numeroPantalla.get()))
resultado=0
elif operacion=="resta":
numeroPantalla.set(int(resultado-int(numeroPantalla.get())))
resultado=0
contador_resta=0
elif operacion=="multiplicacion":
numeroPantalla.set(int(resultado*int(numeroPantalla.get())))
resultado=0
contador_multi=0
elif operacion=="divicion":
numeroPantalla.set(int(resultado/int(numeroPantalla.get())))
resultado=0
contador_divide=0
elif operacion=="cienporciento":
numeroPantalla.set(int(resultado*int(numeroPantalla.get())/100))
resultado=0
contador_pociento=0
elif operacion=="raiz":
numeroPantalla.set(int(math.sqrt(resultado)))
resultado=0
#--------------------------Suma------------------------------------
def suma(num):
global operacion
global resultado
global resetPanatalla
resultado+=int(num)#--Funcion para sumar los resultados
operacion="suma"
resetPanatalla=True
numeroPantalla.set(resultado)
#--------------------------Suma------------------------------------
contador_raiz=0
def raizC(num):
global operacion
global resultado
global num1
global contador_raiz
global resetPanatalla
if contador_raiz==0:
num1=int(num)
resultado=num1
else:
if contador_raiz==1:
resultado=math.sqrt(num)
else:
resultado=int(math.sqrt(resultado))
numeroPantalla.set(resultado)
resultado=numeroPantalla.get()
contador_raiz=contador_raiz+1
operacion="raiz"
resetPanatalla=True
#--------------------------Resta------------------------------------
num1=0
contador_resta=0
def resta(num):
global operacion
global resultado
global num1
global contador_resta
global resetPanatalla
if contador_resta==0:
num1=int(num)
resultado=num1
else:
if contador_resta==1:
resultado=num1-int(num)
else:
resultado=int(resultado)-int(num)
numeroPantalla.set(resultado)
resultado=numeroPantalla.get()
contador_resta=contador_resta+1
operacion="resta"
resetPanatalla=True
#-----------------------Multiplica---------------------------------------
contador_multi=0
def mult(num):
global operacion
global resultado
global num1
global contador_multi
global resetPanatalla
if contador_multi==0:
num1=int(num)
resultado=num1
else:
if contador_multi==1:
resultado=num1*int(num)
else:
resultado=int(resultado)*int(num)
numeroPantalla.set(resultado)
resultado=numeroPantalla.get()
contador_multi=contador_multi+1
operacion="multiplicacion"
resetPanatalla=True
#------------------------Porcientaje---------------------------------
contador_pociento=0
def porciento(num):
global operacion
global resultado
global num1
global contador_pociento
global resetPanatalla
if contador_pociento==0:
num1=int(num)
resultado=num1
else:
if contador_pociento==1:
resultado=num1*int(num)/100
else:
resultado=int(resultado)*int(num)/100
numeroPantalla.set(resultado)
resultado=numeroPantalla.get()
contador_pociento=contador_pociento+1
operacion="cienporciento"
resetPanatalla=True
#-------------------------Divide-------------------------------------
contador_divide=0
def div(num):
global operacion
global resultado
global num1
global contador_divide
global resetPanatalla
if contador_divide==0:
num1=float(num)
resultado=num1
else:
if contador_divide==1:
resultado=num1/float(num)
else:
resultado=float(resultado)/float(num)
numeroPantalla.set(resultado)
resultado=numeroPantalla.get()
contador_divide=contador_divide+1
operacion="divicion"
resetPanatalla=True
#------ Aqui comensamos con la pantalla -------------
pantalla=Entry(miFrame, textvariable=numeroPantalla, width=20, insertwidth=5)
pantalla.grid(row=1, column=1, pady=10, columnspan=5)
pantalla.config(background="gray", fg="#000", justify="right")
#--------------------Primera fila de botones--------------------
boton7=Button(miFrame, text="7", width=5, height=2, bd=1, bg="#CEEAFD", command=lambda:pulsaNum("7"))
boton7.grid(row=2, column=1)
boton8=Button(miFrame, text="8", width=5, height=2, bd=1, bg="#CEEAFD", command=lambda:pulsaNum("8"))
boton8.grid(row=2, column=2)
boton9=Button(miFrame, text="9", width=5, height=2, bd=1, bg="#CEEAFD", command=lambda:pulsaNum("9"))
boton9.grid(row=2, column=3)
botonClear=Button(miFrame, text="C", width=5, height=2, bd=1, command=lambda:resetBoton())
botonClear.grid(row=2, column=4)
botonDel=Button(miFrame, text="Inf", width=5, height=2, bd=1, command=lambda:mensaje())
botonDel.grid(row=2, column=5)
#--------------------Segunda fila de botones--------------------
boton4=Button(miFrame, text="4", width=5, height=2, bd=1, bg="#CEEAFD", command=lambda:pulsaNum("4"))
boton4.grid(row=3, column=1)
boton5=Button(miFrame, text="5", width=5, height=2, bd=1, bg="#CEEAFD", command=lambda:pulsaNum("5"))
boton5.grid(row=3, column=2)
boton6=Button(miFrame, text="6", width=5, height=2, bd=1, bg="#CEEAFD", command=lambda:pulsaNum("6"))
boton6.grid(row=3, column=3)
botonMult=Button(miFrame, text="X", width=5, height=2, bd=1, command=lambda:mult(numeroPantalla.get()))
botonMult.grid(row=3, column=4)
botonEleva=Button(miFrame, text="√", width=5, height=2, bd=1, command=lambda:raizC(numeroPantalla.get()))
botonEleva.grid(row=3, column=5)
#--------------------Tercera fila de botones--------------------
boton1=Button(miFrame, text="1", width=5, height=2, bd=1, bg="#CEEAFD", command=lambda:pulsaNum("1"))
boton1.grid(row=4, column=1)
boton2=Button(miFrame, text="2", width=5, height=2, bd=1, bg="#CEEAFD", command=lambda:pulsaNum("2"))
boton2.grid(row=4, column=2)
boton3=Button(miFrame, text="3", width=5, height=2, bd=1, bg="#CEEAFD", command=lambda:pulsaNum("3"))
boton3.grid(row=4, column=3)
botonRest=Button(miFrame, text="-", width=5, height=2, bd=1, command=lambda:resta(numeroPantalla.get()))
botonRest.grid(row=4, column=4)
botonMas=Button(miFrame, text="+", width=5, height=2, bd=1, command=lambda:suma(numeroPantalla.get()))
botonMas.grid(row=4, column=5)
#--------------------Cuarta fila de botones--------------------
botonPunto=Button(miFrame, text=".", width=5, height=2, bd=1, command=lambda:pulsaNum("."))
botonPunto.grid(row=5, column=1)
boton0=Button(miFrame, text="0", width=5, height=2, bd=1, bg="#CEEAFD", command=lambda:pulsaNum("0"))
boton0.grid(row=5, column=2)
botonIgual=Button(miFrame, text="=", width=5, height=2, bd=1, activebackground="#F50743", command=lambda:resultadoFinal())
botonIgual.grid(row=5, column=3)
botonDivide=Button(miFrame, text="/", width=5, height=2, bd=1, command=lambda:div(numeroPantalla.get()) )
botonDivide.grid(row=5, column=4)
botonPorciento=Button(miFrame, text="%", width=5, height=2, bd=1, command=lambda:porciento(numeroPantalla.get()))
botonPorciento.grid(row=5, column=5)
raiz.mainloop()
Comentarios sobre la versión: 1.0 (0)
No hay comentarios