""" Autor: Vinicius Rodrigues da Cunha Perallis Data: 19/04/2006
- 20/04/2006
Projeto: Calculadora que trabalha que imita uam fita de impressão Interpretador: Python 2.4.1 Sistema Operacional: Linux """
#Importa todas funcoes do modulo Tkinter from Tkinter import *
#Classe Principal que executa o aplicativo Calculadora class Calculadora:
def init(self,parent):
- self.myapp=parent self.myapp.title("Calculadora - Phy") #Cria o frame principa self.geral=Frame(self.myapp,bg="gray") self.geral.pack() #Cria os frames nescessarios para a disposição dos widgets no
programa
- self.fexibir=Frame(self.geral,bg="gray") self.fzero=Frame(self.geral,bg="gray") self.fum=Frame(self.geral,bg="gray") self.fdois=Frame(self.geral,bg="gray") self.ftreis=Frame(self.geral,bg="gray") self.fquatro=Frame(self.geral,bg="gray") #Caixa de texto, que servirá para mostrar os numeros
self.visor=Entry(self.fexibir,width=23,bg="white",fg="blue",justify="right")
- self.visor.insert(INSERT,0) # Frame geral: Escreve um titulo na primeira linha do programa self.titulo=Label(self.geral,text=" CALCULADORA PYTHON
",bg="gray",fg="black",font=('Helvetica','10','bold'))
- # Insere a cixa de Texto que seá utilizada para fazer a fita de
impressão
- self.ffita=Frame(self.geral) self.ffita.pack(side="right",padx=15) self.sb=Scrollbar(self.ffita)
self.fita=Text(self.ffita,width=23,height=13,bg="white",yscrollcommand=self.sb.set)
- self.sb["command"] = self.fita.yview self.fita.pack(side="left",padx=0) self.sb.pack(side="right",fill=Y) ## WIDGETS NO FRAME ZERO
- #Botao para reiniciar a calculadora
self.c=Button(self.fzero,text="C",bg="white",width=4,command=self.zera)
- #Label para organizar o programa self.space1=Label(self.fzero,bg="gray",text="
")
- #Botao igual
self.igual=Button(self.fzero,text="=",bg="white",width=4,command=lambda sin="": self.op(sin))
- ## WIDGETS NO FRAME UM
- self.sete=Button(self.fum,text="7",width=4,command=lambda n=7:
self.write_visor(n))
- self.oito=Button(self.fum,text="8",width=4,command=lambda n=8:
self.write_visor(n))
- self.nove=Button(self.fum,text="9",width=4,command=lambda n=9:
self.write_visor(n))
- self.div=Button(self.fum,text="/",fg="red",width=4,
command=lambda sin='/': self.op(sin))
- ## WIDGETS NO FRAME DOIS
- self.quatro=Button(self.fdois,text="4",width=4,command=lambda
n=4: self.write_visor(n))
- self.cinco=Button(self.fdois,text="5",width=4,command=lambda
n=5: self.write_visor(n))
- self.seis=Button(self.fdois,text="6",width=4,command=lambda
n=6: self.write_visor(n))
- self.mult=Button(self.fdois,text="*",fg="red",width=4
,command=lambda sin='*': self.op(sin))
- ## WIDGETS NO FRAME TREIS
- self.um=Button(self.ftreis,text="1",width=4,command=lambda n=1:
self.write_visor(n) )
- self.dois=Button(self.ftreis,text="2",width=4,command=lambda
n=2: self.write_visor(n))
- self.tres=Button(self.ftreis,text="3",width=4,command=lambda
n=3: self.write_visor(n))
- self.menos=Button(self.ftreis,text="-",fg="red",width=4,
command=lambda sin='-': self.op(sin) )
- ## WIDGETS NO FRAME
QUATRO#########################################################
- self.zero=Button(self.fquatro,text="0",width=4,command=lambda
n=0: self.write_visor(n))
- self.virg=Button(self.fquatro,text=",",width=4,command=lambda
n='.': self.write_visor(n))
- self.maismenos=Button(self.fquatro,fg="red",text="+/-",width=4,
command=lambda n=-1: self.write_visor(n))
- self.mais=Button(self.fquatro,fg="red",text="+",width=4,
command=lambda sin='+': self.op(sin))
- #Frame fgeral self.titulo.pack() #Frame fexibir self.fexibir.pack() self.visor.pack(ipadx="3") #Frame fzero self.fzero.pack() self.c.pack(side=LEFT,fill=X,pady="5",padx="2") self.igual.pack(side=LEFT,fill=X,pady="5",padx="2") self.space1.pack() #Frame fum self.fum.pack() self.sete.pack(side="left",padx=2,pady=2) self.oito.pack(side="left",padx=2,pady=2) self.nove.pack(side="left",padx=2,pady=2) self.div.pack(side="left",padx=2,pady=2) #Frame fdois self.fdois.pack() self.seis.pack(side="left",padx=2,pady=2) self.cinco.pack(side="left",padx=2,pady=2) self.quatro.pack(side="left",padx=2,pady=2) self.mult.pack(side="left",padx=2,pady=2) #Frame ftreis self.ftreis.pack() self.tres.pack(side="left",padx=2,pady=2) self.dois.pack(side="left",padx=2,pady=2) self.um.pack(side="left",padx=2,pady=2) self.menos.pack(side="left",padx=2,pady=2) #Frame fquatro self.fquatro.pack() self.maismenos.pack(side="left",padx=2,pady=2) self.zero.pack(side="left",padx=2,pady=2) self.virg.pack(side="left",padx=2,pady=2) self.mais.pack(side="left",padx=2,pady=2) # Variais da classe self.z=0 self.w=1 self.atual=0 self.i=0 self.ty=0 self.num=0 self.prim=0 self.h=0 self.sa=0
###
Função para realizar as operações aritiméticas
###
- def op(self,sin):
- if (self.w==0):
- self.num=float(self.visor.get()) print self.num self.sinal=sin self.w=1 self.z=1 self.i=0 self.ty=0 self.divi=0 if self.prim==0:
- self.ty=1
- if self.ty==0:
- self.atual=float(self.visor.get())
- self.num=float(self.visor.get()) self.sa=0
- self.num=self.num + self.atual
- self.num=self.num - self.atual
- self.num=self.num / self.atual
- self.visor.delete(0,END) self.visor.insert(INSERT,"Imposivel dividir") self.divi=1 self.prim=1
- self.num=self.num * self.atual
- self.visor.delete(0,END) self.visor.insert(END,self.num) self.prim=1
- self.fita.insert(INSERT,"\n"+self.sinal) self.fita.insert(INSERT,"\n"+str(self.atual)) self.fita.insert(INSERT,"\n"+"=") self.fita.insert(INSERT,"\n"+str(self.num))
- self.num=float(self.visor.get()) print self.num self.sinal=sin self.w=1 self.z=1 self.i=0 self.ty=0 self.divi=0 if self.prim==0:
###
- if (self.w==0):
Fim da funçõa aritmética op
###
###
Função para escrever os numeros no visor
###
- def write_visor(self,n):
- if (self.z==1) and n!=-1:
- if self.i==0:
- self.visor.delete(0,END)
- if self.i==0:
- self.visor.delete(0,END)
- self.la=float(self.visor.get()) * (-1) self.visor.delete(0,END) self.visor.insert(END,self.la) self.fita.insert(INSERT,"\n"+"*(-1)") self.fita.insert(INSERT,"\n"+"=") self.fita.insert(INSERT,"\n"+str(self.la)) self.sa=1
- if self.i==0:
###
- if (self.z==1) and n!=-1:
Fim da funçõa write_visor
###
###
Função para reiniciar a calculadora
###
- def zera(self):
- self.num=0 self.z=0 self.w=1 self.atual=0 self.i=0 self.ty=0 self.prim=0 self.visor.delete(0,END) self.visor.insert(INSERT,0) self.fita.delete('1.0','90.0')
###
Fim da função zera
###
# root Intacia-se pela classe Tk() e inicia a aplicação root=Tk() aplicativo=Calculadora(root) root.mainloop()