Full calculator

unknown
plain_text
2 months ago
6.4 kB
3
Indexable
Never
def draw_calc():
penup()
goto(-100,-160)
pendown()
color("#02055A")
begin_fill()
for i in range(2):
forward(200)
left(90)
forward(300)
left(90)
end_fill()

#This function will draw the small screen
def draw_screen():
color("#253DA1")
penup()
goto(80,80)
left(90)
pendown()
begin_fill()
forward(50)
left(90)
forward(160)
left(90)
forward(50)
end_fill()

#This function will draw all the buttons
def draw_button(x,y):
penup()
color("dark blue")
goto(x,y)
begin_fill()
for i in range(3):
forward(30)
left(90)
end_fill()
color("white")

#This function will label the buttons
def draw_number(x,y, label):
penup()
goto(x,y)
write(label, font=("Arial", 20), align="center")

#Speed and background
speed(0)
bgcolor("light grey")

#This calls the functions that create the base calculator
draw_calc()
draw_screen()

#Button 7
draw_button(-80,50)
draw_number(-65,25, 7)

#Button 8
draw_button(-5,50)
draw_number(-20,25, 8)

#Button 9
draw_button(40,20)
draw_number(25,25, 9)

#Button /
draw_button(55,20)
draw_number(70,25, "/")

#Button 4
draw_button(-80,10)
draw_number(-65,-15, 4)

#Button 5
draw_button(-5,10)
draw_number(-20,-15, 5)

#Button 6
draw_button(40,-20)
draw_number(25,-15, 6)

#Button x
draw_button(55,-20)
draw_number(70,-15, "x")

#Button 1
draw_button(-80,-30)
draw_number(-65,-55, 1)

#Button 2
draw_button(-5,-30)
draw_number(-20,-55, 2)

#Button 3
draw_button(40,-60)
draw_number(25,-55, 3)

#Button -
draw_button(55,-60)
draw_number(70,-55, "-")

#Button =
goto(1,-80)
color("Dark blue")
begin_fill()
for i in range(2):
forward(40)
right(90)
forward(80)
right(90)
end_fill()
color("white")
draw_number(-40,-110, "=")

#Button 0
draw_button(10,-80)
draw_number(25,-105, 0)

#Button +
draw_button(85,-80)
draw_number(70,-105, "+")

#Clickable interaction
canvas=getscreen()
canvas.num1= ""
canvas.operator=""
canvas.num1_done= False
canvas.num2= ""
canvas.num2_done= False

#This function will solve the question inputted
def solve_question():
if canvas.operator == "+":
write(canvas.num1 + "" + canvas.operator + "" + canvas.num2 +"="+  str(answer), font=("Arial", 15), align="right")
if canvas.operator == "-":
write(canvas.num1 + "" + canvas.operator + "" + canvas.num2 +"="+ str(answer),font=("Arial", 15), align="right")
if canvas.operator == "x":
write(canvas.num1 + "" + canvas.operator + "" + canvas.num2 +"="+ str(answer),font=("Arial", 15), align="right")
if canvas.operator == "/":
write(canvas.num1 + "" + canvas.operator + "" + canvas.num2 +"="+ str(answer),font=("Arial", 15), align="right")

#This function will help you to click and write numbers & symbols
def use_calculator(x,y):
if canvas.num1_done == False:
if x>-80 and x<-50 and y>10 and y<40:
canvas.num1 += "7"
elif x>-40 and x<-10 and y>10 and y<40:
canvas.num1 += "8"
elif x>0 and x<30 and y>10 and y<40:
canvas.num1+= "9"
elif x>-80 and x<-50 and y>-30 and y<0:
canvas.num1 += "4"
elif x>-40 and x<-10 and y>-30 and y<0:
canvas.num1+= "5"
elif x>0 and x<30 and y>-30 and y<0:
canvas.num1 += "6"
elif x>-80 and x<-50 and y>-70 and y<-40:
canvas.num1+= "1"
elif x>-40 and x<-10 and y>-60 and y<-30:
canvas.num1 += "2"
elif x>0 and x<30 and y>-60 and y<-30:
canvas.num1+= "3"
elif x>0 and x<30 and y>-110 and y<-80:
canvas.num1 += "0"
elif x>40 and x<70 and y>-110 and y<-90:
canvas.num1_done = True
canvas.operator ="+"
elif x>40 and x<70 and y>-70 and y<-40:
canvas.num1_done = True
canvas.operator = "-"
elif x>40 and x<70 and y>-30 and y<0:
canvas.num1_done = True
canvas.operator ="x"
elif x>40 and x<70 and y>10 and y<40:
canvas.num1_done = True
canvas.operator = "/"
seth(0)
draw_screen()
penup()
goto(80,80)
color("white")
pendown()
write(canvas.num1 + "" + canvas.operator, font=("Arial", 15), align="right")

elif canvas.num2_done == False:
if x>-80 and x<-50 and y>10 and y<40:
canvas.num2 += "7"
elif x>-40 and x<-10 and y>10 and y<40:
canvas.num2 += "8"
elif x>0 and x<30 and y>10 and y<40:
canvas.num2+= "9"
elif x>-80 and x<-50 and y>-30 and y<0:
canvas.num2 += "4"
elif x>-40 and x<-10 and y>-30 and y<0:
canvas.num2+= "5"
elif x>0 and x<30 and y>-30 and y<0:
canvas.num2 += "6"
elif x>-80 and x<-50 and y>-70 and y<-40:
canvas.num2+= "1"
elif x>-40 and x<-10 and y>-60 and y<-30:
canvas.num2 += "2"
elif x>0 and x<30 and y>-60 and y<-30:
canvas.num2+= "3"
elif x>0 and x<30 and y>-110 and y<-80:
canvas.num2 += "0"
elif x>40 and x<70 and y>-110 and y<-90:
canvas.num2_done = True
canvas.operator ="+"
elif x>40 and x<70 and y>-70 and y<-40:
canvas.num2_done = True
canvas.operator = "-"
elif x>40 and x<70 and y>-30 and y<0:
canvas.num2_done= True
canvas.operator ="x"
elif x>40 and x<70 and y>10 and y<40:
canvas.num2_done = True
canvas.operator = "/"
seth(0)
draw_screen()
penup()
goto(80,80)
color("white")
pendown()
write(canvas.num1 + "" + canvas.operator + "" + canvas.num2, font=("Arial", 15), align="right")

#This statement will give the result
if x>-80 and x<-20 and y>-110 and y<-80:
canvas.num2_done = True
seth(0)
draw_screen()
penup()
goto(80,80)
color("white")
pendown()
solve_question()

#Calling full function
canvas.onclick(use_calculator)