10511
Comentário:
|
32733
|
Deleções são marcadas assim. | Adições são marcadas assim. |
Linha 1: | Linha 1: |
= Calculadora Comercial = Esta é uma calculadora que opera semelhante a calculadora do windows(possui memória,raiz quadrada, etc...).Porem ela tambem possui um espaço que imita uma fita de impressão, como uma calculadora comercial. Foi feita com Tkinter. == Código == |
|
Linha 2: | Linha 11: |
#!python |
|
Linha 6: | Linha 17: |
Autor: Vinicius Rodrigues da Cunha Perallis | Autores: Vinicius Rodrigues da Cunha Perallis Gustavo Julião Vaz Fernando Pillo de Lucia Alvaro F. F. Junior Wagner Breschain Guiherme Krulikoswi |
Linha 9: | Linha 26: |
Projeto: Calculadora que trabalha que imita uam fita de impressão |
22/04/2006 23/04/2006 24/04/2006 25/04/2006 26/04/2006 28/04/2006 29/04/2006 01/04/2006 Projeto: Calculadora Comercial(imita uma fita de impressão) Materia: Linguagens de Programação Comerciais |
Linha 12: | Linha 38: |
Sistema Operacional: Linux | Sistemas Compativeis:Windows,Linux,Solaris,etc... Disponível: http://www.pythonbrasil.com.br Contato: perallis@rc.unesp.br |
Linha 18: | Linha 49: |
#Importa as funções seno,cossseno,tangente,sqrt que #é usada pela calculadora from math import * |
|
Linha 23: | Linha 57: |
#método Construtor para iniializar a aplicação | |
Linha 24: | Linha 59: |
self.myapp=parent | self.myapp=parent |
Linha 26: | Linha 62: |
#cria o menu self.menubar = Menu(self.myapp) self.myapp.config(menu=self.menubar) # adiciona o file ao menu file = Menu(self.menubar) file.add_command(label='Sair',command=self.sair) self.menubar.add_cascade(label='Arquivo', \ underline=0, menu=file) # Adiciona o help ao menu help = Menu(self.menubar) help.add_command(label='Autores',command=self.autores) help.add_command(label='Licença',command=self.licenca) help.add_command(label='Como usar?',\ command=self.comousar) self.menubar.add_cascade(label='Ajuda', underline=0, \ menu=help) |
|
Linha 30: | Linha 85: |
#Cria os frames nescessarios para a disposição dos widgets no programa |
#Cria os frames nescessarios para a disposição #dos widgets |
Linha 38: | Linha 93: |
#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.fcinco=Frame(self.geral,bg="gray") #Caixa de texto, que servirá para mostrar os #numeros self.visor=Entry(self.fexibir,width=35,bg="white",\ fg="blue",justify="right") self.visor.insert(INSERT,"0,") #Este trecho de coigo é nescessário para criar #os grupos dos botões radio self.decimais=IntVar() self.habilita=IntVar() self.decimais=1 self.habilita=2 #Botões de rádio , para opcão do nbumero de #casas decimais self.duascasas=Radiobutton(self.fexibir,\ text="2 casas",\ bg="gray",\ variable=self.decimais, \ command=lambda \ casadec="%.2f": \ self.mudcasadec(casadec)) self.quatrocasas=Radiobutton(self.fexibir,\ text="4 casas",\ value=3,\ variable=self.decimais, \ bg="gray",command=lambda \ casadec="%.4f": self.mudcasadec(casadec)) self.infinitascasas=Radiobutton(self.fexibir,\ text="... casas ",\ variable=self.decimais,\ value=4,bg="gray",\ command=lambda \ casadec="%f": \ self.mudcasadec(casadec)) #Frame Criado para inserir os botoes de radio #habilita/desabilita self.festado=Frame(self.geral,bg="gray") self.festado.pack(side="bottom") #Botões de rádio, para habilitar/desabilitar a #fita de impressão self.ativado=Radiobutton(self.festado,text="Ativar",\ bg="gray",\ variable=self.habilita, \ command=lambda : \ self.habilitar(h)) self.desativado=Radiobutton(self.festado,text="Desativar",\ value=2,\ variable=self.habilita,\ bg="gray",command=lambda h=2: \ self.habilitar(h)) #Espaco para melhor posicionar os botoes habilita/desabilita self.espaco=Label(self.festado,text=" \ ",bg="gray") self.espaco.pack(side="left") #Exibe os Botões de rádio , para habilitar ou desabilitar #a fita self.ativado.pack(side="left",padx=12,anchor=W) self.desativado.pack(side="left",padx=4,anchor=W) # Insere a caixa de Texto que será utilizada para #fazer a fita de impressão |
Linha 50: | Linha 164: |
self.ffita.pack(side="right",padx=15) | self.ffita.pack(side="right",padx=15,pady=5) |
Linha 52: | Linha 166: |
self.fita=Text(self.ffita,width=23,height=13,bg="white",yscrollcommand=self.sb.set) |
self.fita=Text(self.ffita,width=23,height=16,\ bg="white",\ yscrollcommand=self.sb.set,\ relief="ridge") |
Linha 59: | Linha 175: |
## WIDGETS NO FRAME ZERO ######################################################### |
## WIDGETS NO FRAME ZERO ##################### |
Linha 62: | Linha 177: |
self.c=Button(self.fzero,text="C",bg="white",width=4,command=self.zera) | self.c=Button(self.fzero,text="C",fg="red",\ width=7,command=self.zera) #Botao para limpar apenas o que esta no visor self.ce=Button(self.fzero,text="CE",fg="red",\ width=7,command=self.zeraprim) #Botao Backspace self.back=Button(self.fzero,text="Backspace",\ fg="red",width=10,\ command=self.volta) |
Linha 65: | Linha 187: |
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)) ################################################################################### |
self.v=StringVar() self.v.set(" ") self.space1=Label(self.fzero,bg="gray",\ textvariable=self.v,\ relief="groove") ############################################## |
Linha 74: | Linha 196: |
## 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() |
## WIDGETS NO FRAME UM ####################### self.mc=Button(self.fum,text="MC",fg="red",\ width=4,command=lambda opm='MC': \ self.memoria(opm)) 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)) self.sqrt=Button(self.fum,text="sqrt",width=4,\ fg="blue",command=lambda \ n='sqrt': self.write_visor(n)) ############################################## ## WIDGETS NO FRAME DOIS ##################### self.mr=Button(self.fdois,text="MR",fg="red",\ width=4,command=lambda opm='MR': \ self.memoria(opm)) 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)) self.umx=Button(self.fdois,text="1/x",width=4,\ fg="blue",command=lambda n='1/x'\ : self.write_visor(n)) ############################################### ## WIDGETS NO FRAME TREIS ###################### self.ms=Button(self.ftreis,text="MS",fg="red",\ width=4,command=lambda opm='MS': \ self.memoria(opm)) 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) ) self.porcentagem=Button(self.ftreis,text="%",\ width=4,fg="blue",\ command=lambda n='%': \ self.write_visor(n)) ################################################# ## WIDGETS NO FRAME QUATRO######################### self.mmais=Button(self.fquatro,text="M+",fg="red", width=4,command=lambda opm='M+': \ self.memoria(opm)) 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="blue",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)) self.igual=Button(self.fquatro,text="=",fg="red",width=4,\ command=lambda sin="=": self.op(sin)) #################################################### ## WIDGETS NO FRAME CINCO######################### self.mmenos=Button(self.fcinco,text="M-",fg="red", width=4,command=lambda opm='M-': \ self.memoria(opm)) self.centena=Button(self.fcinco,fg="brown",text="00",\ width=4, command=lambda n=100: \ self.write_visor(n)) self.milhares=Button(self.fcinco,fg="brown",text="000",\ width=4, command=lambda n=1000: \ self.write_visor(n)) self.mmenos=Button(self.fcinco,text="M-",fg="red", width=4,command=lambda opm='M-': \ self.memoria(opm)) self.seno=Button(self.fcinco,text="sen",fg="brown", width=4,command=lambda n='sen': \ self.write_visor(n)) self.cosseno=Button(self.fcinco,text="cos",fg="brown", width=4,command=lambda n='cos': \ self.write_visor(n)) self.tangente=Button(self.fcinco,text="tan",fg="brown", width=4,command=lambda n='tan': \ self.write_visor(n)) #################################################### |
Linha 130: | Linha 304: |
self.fexibir.pack() | self.fexibir.pack(padx=10,pady=10) |
Linha 133: | Linha 307: |
self.duascasas.pack(side="left",padx=12,anchor=W) self.quatrocasas.pack(side="left",padx=4,anchor=W) self.infinitascasas.pack(side="left",padx=4,anchor=W) |
|
Linha 135: | Linha 312: |
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() |
self.fzero.pack() self.space1.pack(side="left",padx="5") self.c.pack(side="left",pady="5",padx="3") self.ce.pack(side="left",pady="5",padx="3") self.back.pack(side="left",pady="5",padx="3") |
Linha 142: | Linha 321: |
self.fum.pack() |
self.fum.pack(padx=2) self.mc.pack(side="left",padx=4,pady=2) |
Linha 148: | Linha 328: |
self.sqrt.pack(side="left",padx=2,pady=2) | |
Linha 150: | Linha 331: |
self.fdois.pack() | self.fdois.pack(padx=2) self.mr.pack(side="left",padx=4,pady=2) self.quatro.pack(side="left",padx=2,pady=2) self.cinco.pack(side="left",padx=2,pady=2) |
Linha 152: | Linha 337: |
self.cinco.pack(side="left",padx=2,pady=2) self.quatro.pack(side="left",padx=2,pady=2) |
|
Linha 155: | Linha 338: |
self.umx.pack(side="left",padx=2,pady=2) | |
Linha 157: | Linha 341: |
self.ftreis.pack() | self.ftreis.pack(padx=2) self.ms.pack(side="left",padx=4,pady=2) self.um.pack(side="left",padx=2,pady=2) self.dois.pack(side="left",padx=2,pady=2) |
Linha 159: | Linha 347: |
self.dois.pack(side="left",padx=2,pady=2) self.um.pack(side="left",padx=2,pady=2) |
|
Linha 162: | Linha 348: |
self.porcentagem.pack(side="left",padx=2,pady=2) | |
Linha 164: | Linha 351: |
self.fquatro.pack() | self.fquatro.pack(padx=2) self.mmais.pack(side="left",padx=4,pady=2) |
Linha 169: | Linha 358: |
# Variais da classe | self.igual.pack(side="left",padx=2,pady=2) #Frame fcinco self.fcinco.pack(padx=2) self.mmenos.pack(side="left",padx=4,pady=2) self.centena.pack(side="left",padx=2,pady=2) self.milhares.pack(side="left",padx=2,pady=2) self.seno.pack(side="left",padx=2,pady=2) self.cosseno.pack(side="left",padx=2,pady=2) self.tangente.pack(side="left",padx=2,pady=2) # Variais booleanas da classe |
Linha 173: | Linha 374: |
self.atual=0 | |
Linha 176: | Linha 376: |
self.num=0 | |
Linha 180: | Linha 379: |
###------------------------------Função para realizar as operações aritiméticas --------------------------### |
self.sinais=1 self.i=0 self.prim_op=0 #Controle do numero de vezes que o usario clica #na virgula self.ponto=1 #Variaveis usadas para guardar os valores do visor self.atual=0 self.num=0 self.mem=0 self.casadec="%.2f" #metodo para mudar o numero de casas decimais def mudcasadec(self,casadec): self.casadec=casadec #-#---------------- Função aritmética op ---------------#-# |
Linha 188: | Linha 402: |
if (self.w==0): | if (self.w==0) and self.prim_op==1: |
Linha 190: | Linha 404: |
print self.num | self.atual=float(self.visor.get()) self.fita.insert(INSERT,self.num) |
Linha 195: | Linha 410: |
self.ty=0 | self.ty=1 |
Linha 197: | Linha 412: |
self.sinais=1 self.prim=1 self.ponto=1 |
|
Linha 200: | Linha 418: |
else : | elif self.prim_op==1: if sin=="=" and self.i==1 and self.ty==1: self.sinais=1 if sin!="=" and self.ty==1: self.sinal=sin self.sinais=0 self.atual=float(self.visor.get()) |
Linha 203: | Linha 430: |
Linha 208: | Linha 435: |
if self.sinal=='+': | if self.sinal=='+' and self.sinais==1: |
Linha 210: | Linha 437: |
elif self.sinal=='-': | self.i=0 elif self.sinal=='-' and self.sinais==1: |
Linha 212: | Linha 440: |
elif self.sinal=='/' and self.ty!=1 and self.atual!=0: | elif self.sinal=='/' and self.sinais==1 and \ self.atual!=0: self.i=0 |
Linha 214: | Linha 444: |
elif self.sinal=='/' and self.atual==0 and self.ty!=1: | elif self.sinal=='/' and self.atual==0 and \ self.sinais==1: self.zera() |
Linha 218: | Linha 450: |
self.prim=1 elif self.sinal=='*' and self.ty!=1 and self.prim==1: |
self.sinais=0 elif self.sinal=='*' and self.prim==1 and \ self.sinais==1: self.i=0 |
Linha 224: | Linha 458: |
self.visor.insert(END,self.num) | self.visor.insert(END,self.casadec %self.num) |
Linha 226: | Linha 460: |
if self.divi==0 and self.ty==0: | if (self.divi==0 and self.ty==0) or self.sinais==1: |
Linha 230: | Linha 465: |
self.fita.insert(INSERT,"\n"+str(self.num)) self.atual=0 |
self.fita.insert(INSERT,"\n "+\ self.casadec %self.num) if sin!="=" and sin!=self.sinal and self.ty==0: self.sinais=0 self.sinal=sin self.sinal=sin |
Linha 238: | Linha 477: |
self.div=0 self.sinal=sin ###---------------------------------------- Fim da funçõa aritmética op --------------------------------------### ###-------------------------------- Função para escrever os numeros no visor ---------------------------------### |
self.div=0 self.sinais=1 self.ponto=1 #-#---------------- Fim da função aritmética op ---------------#-# #+#------- Função para escrever os numeros no visor ----+# |
Linha 249: | Linha 486: |
if (self.z==1) and n!=-1: | if (self.z==1) and n!=-1 and n!="1/x" and n!="sqrt" and n!="%" \ and n!='.' and n!=100 and n!=1000 and n!="sen" and n!="cos" \ and n!="tan": |
Linha 259: | Linha 498: |
|
self.i=1 self.prim_op=1 |
Linha 262: | Linha 501: |
elif self.z==0 and n!=-1: | elif self.z==0 and n!=-1 and n!="1/x" and n!="sqrt" and n!="%" \ and n!='.'and n!=100 and n!=1000 and n!="sen" and n!="cos" \ and n!="tan": |
Linha 266: | Linha 507: |
self.fita.insert(INSERT,n) | |
Linha 270: | Linha 511: |
if n==-1: self.la=float(self.visor.get()) * (-1) |
self.i=1 self.prim_op=1 elif n==-1 and self.prim_op==1: self.la=(float(self.visor.get())*(-1)) |
Linha 273: | Linha 517: |
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.visor.insert(END,self.casadec %self.la) if self.ty==1: self.fita.insert(INSERT,"\n"+"*(-1)") self.fita.insert(INSERT,"\n"+"=") self.fita.insert(INSERT,"\n "+self.casadec %self.la) |
Linha 278: | Linha 523: |
###---------------------------------------- Fim da funçõa write_visor --------------------------------------### ###---------------------------------- Função para reiniciar a calculadora ----------------------------------### |
self.i=0 self.prim_op=1 elif n=="1/x" and self.prim_op==1: try: self.la=float(1/float(self.visor.get())) self.visor.delete(0,END) self.visor.insert(END,self.casadec %self.la) if self.ty==1: self.fita.insert(INSERT,"**(-1)") self.fita.insert(INSERT,"\n"+"=") self.fita.insert(INSERT,"\n "+self.casadec %self.la) self.sa=1 self.i=0 except: self.visor.delete(0,END) elif n=="sqrt" and self.prim_op==1: try: self.la=sqrt(float(self.visor.get())) self.visor.delete(0,END) self.visor.insert(END,self.casadec %self.la) if self.ty==1: self.fita.insert(INSERT,"\n"+"sqrt") self.fita.insert(INSERT,"\n"+"=") self.fita.insert(INSERT,"\n "+self.casadec %self.la) self.sa=1 self.i=0 except: self.zera() self.visor.delete(0,END) self.visor.insert(END,"Valor invalido para função") elif n=="sen" and self.prim_op==1: try: self.la=sin((float(self.visor.get())/180)*pi) self.visor.delete(0,END) self.visor.insert(END,self.casadec %self.la) if self.ty==1: self.fita.insert(INSERT,"\n"+"sen") self.fita.insert(INSERT,"\n"+"=") self.fita.insert(INSERT,"\n " \ +self.casadec %self.la) self.sa=1 self.i=0 except: self.zera() self.visor.delete(0,END) self.visor.insert(END,"Valor invalido para função") elif n=="cos" and self.prim_op==1: try: self.la=cos((float(self.visor.get())/180)*pi) self.visor.delete(0,END) self.visor.insert(END,self.casadec %self.la) if self.ty==1: self.fita.insert(INSERT,"\n"+"cos") self.fita.insert(INSERT,"\n"+"=") self.fita.insert(INSERT,"\n "+self.casadec %self.la) self.sa=1 self.i=0 except: self.zera() self.visor.delete(0,END) self.visor.insert(END,"Valor invalido para função") elif n=="tan" and self.prim_op==1: try: self.la=tan((float(self.visor.get())/180)*pi) self.visor.delete(0,END) self.visor.insert(END,self.casadec %self.la) if self.ty==1: self.fita.insert(INSERT,"\n"+"tan") self.fita.insert(INSERT,"\n"+"=") self.fita.insert(INSERT,"\n "+self.casadec %self.la) self.sa=1 self.i=0 except: self.zera() self.visor.delete(0,END) elif n=="%" and self.ty==0 and self.prim_op==1 and self.z==1: self.perc=float(self.visor.get()) self.la=self.num*(float(self.visor.get()))/100 self.visor.delete(0,END) self.visor.insert(END,self.casadec %self.la) if self.ty==1: self.fita.insert(INSERT,"\n"+"*") self.fita.insert(INSERT,"\n"+str(self.perc/100)) self.fita.insert(INSERT,"\n"+"%") self.fita.insert(INSERT,"\n"+"=") self.fita.insert(INSERT,"\n "+self.casadec %self.la) self.sa=1 self.i=1 elif n=="%" and self.ty==1 and self.prim_op==1 and self.z==1: self.perc=float(self.visor.get()) self.la=((float(self.visor.get()))*\ (float(self.visor.get())))/100 self.visor.delete(0,END) self.visor.insert(END,self.casadec %self.la) if self.ty==1: self.fita.insert(INSERT,"\n"+"*") self.fita.insert(INSERT,"\n"+str(self.perc/100)) self.fita.insert(INSERT,"\n"+"=") self.fita.insert(INSERT,"\n "+\ self.casadec %self.la) self.sa=1 self.i=1 elif n=="%" and self.ty==0 and self.prim_op==1 and self.z==0: self.perc=float(self.visor.get()) self.la=((float(self.visor.get()))*(0))/100 self.visor.delete(0,END) self.visor.insert(END,self.casadec %self.la) if self.ty==0: self.fita.insert(INSERT,"\n"+"*") self.fita.insert(INSERT,"\n"+str(0/100)) self.fita.insert(INSERT,"\n"+"=") self.fita.insert(INSERT,"\n "+self.casadec %self.la) self.sa=1 self.i=1 elif n=='.' and self.ponto==1: self.visor.insert(INSERT,n) if self.z==0: self.fita.insert(INSERT,n) self.ponto=0 elif n==100 and self.prim_op==1: try: self.la=(float(self.visor.get()))*n self.visor.delete(0,END) self.visor.insert(END,self.casadec %self.la) if self.ty==1: self.fita.insert(INSERT,"\n"+"*100") self.fita.insert(INSERT,"\n"+"=") self.fita.insert(INSERT,"\n "+self.casadec %self.la) self.sa=1 self.i=1 except: self.zera() self.visor.delete(0,END) self.visor.insert(END,"Valor invalido para função") elif n==1000 and self.prim_op==1: try: self.la=(float(self.visor.get()))*n self.visor.delete(0,END) self.visor.insert(END,self.casadec %self.la) if self.ty==1: self.fita.insert(INSERT,"\n"+"*1000") self.fita.insert(INSERT,"\n"+"=") self.fita.insert(INSERT,"\n "+self.casadec %self.la) self.sa=1 self.i=1 except: self.zera() self.visor.delete(0,END) self.visor.insert(END,"Valor invalido para função") #-#--------- Fim da função write_visor ------------#-# #+#-------Função para manipular a memória----------#+# def memoria(self,opm): if opm=="MC": self.mem=0 self.v.set(" ") elif opm=="MR": self.visor.delete(0,END) self.visor.insert(INSERT,str(self.mem)) self.i=0 self.ty=0 elif opm=="MS": self.mem=float(self.visor.get()) self.v.set(" M ") self.i=0 elif opm=="M+": self.mem=self.mem + float(self.visor.get()) self.v.set(" M ") self.i=0 elif opm=="M-": self.mem=self.mem - float(self.visor.get()) self.v.set(" M ") self.i=0 #-#------------------- Fim Memoria ---- -------------#-# #+#------- Função para reiniciar a calculadora ------#+# |
Linha 286: | Linha 721: |
self.num=0 | |
Linha 292: | Linha 726: |
self.num=0 | |
Linha 293: | Linha 728: |
self.h=0 self.sa=0 self.sinais=1 self.i=0 self.prim_op=0 self.ponto=1 |
|
Linha 296: | Linha 737: |
###------------------------------------------- Fim da função zera-------------------------------------------### |
#-#----------------- Fim da função zera -------------#-# #+#-------------------- Função CE -------------------#+# def zeraprim(self): if self.ty==0: self.visor.delete(0,END) self.visor.insert(INSERT,0) self.i=0 else: self.zera() #-#----------------- Fim da função CE ----------------#-# #+#-------------- Função volta(Backspace) ------------#+# def volta(self): if self.ty==0 and self.prim_op==1: tam = len(self.visor.get()) self.visor.delete(tam-1,tam) #-#----------------- Fim da função volta--------------#-# #+#------------------- Função Habilita ---------------#+# def habilitar(self,h): if h==2: self.fita["state"]="disabled" if h==1: self.fita["state"]="normal" #-#---------------- Fim da função Habilita-------------#-# #+#-----------------Janela Sobre(Autores)---------------#+# def autores(self): s = """ Autores: Vinícius Rodrigues da Cunha Perallis UNESP, Rio Claro Instituto de Geociências e Ciências Exatas IGCE Departamento de Estátistica e Matemática aplicada e Computação(DEMAC) Email: perallis@rc.unesp.br """ message_box = Toplevel() message_box.title("Autores:") message_box_fr = Frame(message_box) message_box_fr.pack(expand=0, fill=BOTH) message_lb = Label(message_box_fr, text = s,\ justify="left") message_lb.grid(row=0, column=0) quitbutton = Button(message_box_fr,\ text = 'Fechar', \ command=message_box.destroy,\ borderwidth=1) quitbutton.grid(row=1, column=0) #-#----------------Fim de Janela Sobre(Autores)----------#-# #+#------------------Janela Sobre(Licenca)---------------#+# def licenca(self): s = """ Licença: O uso deste programa é gratuito. Seu código pode ser melhorado, ou alterado conforme a nescessidade do usuário Email: perallis@rc.unesp.br """ message_box = Toplevel() message_box.title("Licença:") message_box_fr = Frame(message_box) message_box_fr.pack(expand=0, fill=BOTH) message_lb = Label(message_box_fr, text = s,\ justify="left") message_lb.grid(row=0, column=0) quitbutton = Button(message_box_fr,\ text = 'Fechar', \ command=message_box.destroy,\ borderwidth=1) quitbutton.grid(row=1, column=0) #-#-----------Fim de Janela Licenca(Autores)-------------#-# #+#------------------Janela ComoUsar(Licenca)---------------#+# def comousar(self): s = """ Como Usar: Esta é uma calculadora que opera como qualquer outra calculadora(semelhante a do windows). A unica diferença,é que ela imita uma fita de impressão, como uma calculadora comercial Email: perallis@rc.unesp.br """ message_box = Toplevel() message_box.title("Como usar?") message_box_fr = Frame(message_box) message_box_fr.pack(expand=0, fill=BOTH) message_lb = Label(message_box_fr, text = s,\ justify="left") message_lb.grid(row=0, column=0) quitbutton = Button(message_box_fr, text = 'Fechar', \ command=message_box.destroy,\ borderwidth=1) quitbutton.grid(row=1, column=0) #-#----------------Fim de Janela ComoUsar(Autores)----------#-# #+#-------------- Função para sair do programa ----------#+# def sair(self): root.destroy() #-#--------------------- Fim Fnção sair -----------------#-# |
Linha 306: | Linha 852: |
}}} |
Calculadora Comercial
Esta é uma calculadora que opera semelhante a calculadora do windows(possui memória,raiz quadrada, etc...).Porem ela tambem possui um espaço que imita uma fita de impressão, como uma calculadora comercial.
Foi feita com Tkinter.