Tamanho: 32733
Comentário:
|
Tamanho: 33304
Comentário:
|
Deleções são marcadas assim. | Adições são marcadas assim. |
Linha 126: | Linha 126: |
variable=self.decimais,\ | variable=self.decimais,\ |
Linha 129: | Linha 129: |
casadec="%f": \ self.mudcasadec(casadec)) |
casadec="%f": \ self.mudcasadec(casadec)) |
Linha 151: | Linha 151: |
self.espaco=Label(self.festado,text=" \ | self.espaco=Label(self.festado,text=" \ |
Linha 155: | Linha 155: |
#Exibe os Botões de rádio , para habilitar ou desabilitar | #Exibe os Botões de rádio , para habilitar ou desabilitar |
Linha 400: | Linha 400: |
#-#---------------- Função aritmética op ---------------#-# | #-#--------------- Função aritmética op -------------#-# |
Linha 480: | Linha 480: |
#-#---------------- Fim da função aritmética op ---------------#-# #+#------- Função para escrever os numeros no visor ----+# |
#-#-------------- Fim da função aritmética op ---------#-# #+#------- Função para escrever os numeros no visor ----#+# |
Linha 486: | Linha 486: |
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" \ |
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" \ |
Linha 501: | Linha 502: |
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" \ |
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" \ |
Linha 521: | Linha 523: |
self.fita.insert(INSERT,"\n "+self.casadec %self.la) | self.fita.insert(INSERT,"\n "+\ self.casadec %self.la) |
Linha 535: | Linha 538: |
self.fita.insert(INSERT,"\n "+self.casadec %self.la) | self.fita.insert(INSERT,"\n "+\ self.casadec %self.la) |
Linha 549: | Linha 553: |
self.fita.insert(INSERT,"\n "+self.casadec %self.la) | self.fita.insert(INSERT,"\n "+\ self.casadec %self.la) |
Linha 556: | Linha 561: |
self.visor.insert(END,"Valor invalido para função") | self.visor.insert(END,\ "Valor invalido para função") |
Linha 573: | Linha 579: |
self.visor.insert(END,"Valor invalido para função") | self.visor.insert(END,\ "Valor invalido para função") |
Linha 584: | Linha 591: |
self.fita.insert(INSERT,"\n "+self.casadec %self.la) | self.fita.insert(INSERT,"\n "\ +self.casadec %self.la) |
Linha 600: | Linha 608: |
self.fita.insert(INSERT,"\n "+self.casadec %self.la) | self.fita.insert(INSERT,"\n "\ +self.casadec %self.la) |
Linha 607: | Linha 616: |
elif n=="%" and self.ty==0 and self.prim_op==1 and self.z==1: | elif n=="%" and self.ty==0 and self.prim_op==1 \ and self.z==1: |
Linha 614: | Linha 624: |
self.fita.insert(INSERT,"\n"+str(self.perc/100)) | self.fita.insert(INSERT,"\n"+\ str(self.perc/100)) |
Linha 617: | Linha 628: |
self.fita.insert(INSERT,"\n "+self.casadec %self.la) | self.fita.insert(INSERT,"\n "+\ self.casadec %self.la) |
Linha 621: | Linha 633: |
elif n=="%" and self.ty==1 and self.prim_op==1 and self.z==1: | elif n=="%" and self.ty==1 and self.prim_op==1 \ and self.z==1: |
Linha 629: | Linha 642: |
self.fita.insert(INSERT,"\n"+str(self.perc/100)) | self.fita.insert(INSERT,"\n"+ \ str(self.perc/100)) |
Linha 636: | Linha 650: |
elif n=="%" and self.ty==0 and self.prim_op==1 and self.z==0: | elif n=="%" and self.ty==0 and self.prim_op==1 \ and self.z==0: |
Linha 645: | Linha 660: |
self.fita.insert(INSERT,"\n "+self.casadec %self.la) | self.fita.insert(INSERT,"\n "\ +self.casadec %self.la) |
Linha 665: | Linha 681: |
self.fita.insert(INSERT,"\n "+self.casadec %self.la) | self.fita.insert(INSERT,"\n "\ +self.casadec %self.la) |
Linha 671: | Linha 688: |
self.visor.insert(END,"Valor invalido para função") | self.visor.insert(END,\ "Valor invalido para função") |
Linha 681: | Linha 699: |
self.fita.insert(INSERT,"\n "+self.casadec %self.la) | self.fita.insert(INSERT,"\n "\ +self.casadec %self.la) |
Linha 769: | Linha 788: |
#+#-----------------Janela Sobre(Autores)---------------#+# | #+#-----------------Janela Sobre(Autores)--------------#+# |
Linha 776: | Linha 795: |
Departamento de Estátistica e Matemática aplicada e Computação(DEMAC) | |
Linha 818: | Linha 836: |
#+#------------------Janela ComoUsar(Licenca)---------------#+# | #+#------------------Janela ComoUsar(Licenca)------------#+# |
Linha 835: | Linha 853: |
quitbutton = Button(message_box_fr, text = 'Fechar', \ | quitbutton = Button(message_box_fr, \ text = 'Fechar', \ |
Linha 839: | Linha 858: |
#-#----------------Fim de Janela ComoUsar(Autores)----------#-# | #-#----------------Fim de Janela ComoUsar(Autores)-------#-# |
Linha 852: | Linha 871: |
}}} |
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
1 #!/usr/bin/python
2 # -*- coding: cp1252 -*-
3
4 """
5 Autores: Vinicius Rodrigues da Cunha Perallis
6 Gustavo Julião Vaz
7 Fernando Pillo de Lucia
8 Alvaro F. F. Junior
9 Wagner Breschain
10 Guiherme Krulikoswi
11
12 Data: 19/04/2006
13 20/04/2006
14 22/04/2006
15 23/04/2006
16 24/04/2006
17 25/04/2006
18 26/04/2006
19 28/04/2006
20 29/04/2006
21 01/04/2006
22
23 Projeto: Calculadora Comercial(imita uma fita de impressão)
24 Materia: Linguagens de Programação Comerciais
25 Interpretador: Python 2.4.1
26
27 Sistemas Compativeis:Windows,Linux,Solaris,etc...
28
29 Disponível: http://www.pythonbrasil.com.br
30
31 Contato: perallis@rc.unesp.br
32 """
33
34
35 #Importa todas funcoes do modulo Tkinter
36 from Tkinter import *
37 #Importa as funções seno,cossseno,tangente,sqrt que
38 #é usada pela calculadora
39 from math import *
40
41
42 #Classe Principal que executa o aplicativo Calculadora
43 class Calculadora:
44
45 #método Construtor para iniializar a aplicação
46 def __init__(self,parent):
47
48 self.myapp=parent
49 self.myapp.title("Calculadora - Phy")
50 #cria o menu
51 self.menubar = Menu(self.myapp)
52 self.myapp.config(menu=self.menubar)
53 # adiciona o file ao menu
54 file = Menu(self.menubar)
55 file.add_command(label='Sair',command=self.sair)
56 self.menubar.add_cascade(label='Arquivo', \
57 underline=0, menu=file)
58
59
60 # Adiciona o help ao menu
61 help = Menu(self.menubar)
62 help.add_command(label='Autores',command=self.autores)
63 help.add_command(label='Licença',command=self.licenca)
64 help.add_command(label='Como usar?',\
65 command=self.comousar)
66 self.menubar.add_cascade(label='Ajuda', underline=0, \
67 menu=help)
68
69 #Cria o frame principa
70 self.geral=Frame(self.myapp,bg="gray")
71 self.geral.pack()
72
73 #Cria os frames nescessarios para a disposição
74 #dos widgets
75 self.fexibir=Frame(self.geral,bg="gray")
76 self.fzero=Frame(self.geral,bg="gray")
77 self.fum=Frame(self.geral,bg="gray")
78 self.fdois=Frame(self.geral,bg="gray")
79 self.ftreis=Frame(self.geral,bg="gray")
80 self.fquatro=Frame(self.geral,bg="gray")
81 self.fcinco=Frame(self.geral,bg="gray")
82
83 #Caixa de texto, que servirá para mostrar os
84 #numeros
85 self.visor=Entry(self.fexibir,width=35,bg="white",\
86 fg="blue",justify="right")
87 self.visor.insert(INSERT,"0,")
88
89 #Este trecho de coigo é nescessário para criar
90 #os grupos dos botões radio
91 self.decimais=IntVar()
92 self.habilita=IntVar()
93 self.decimais=1
94 self.habilita=2
95
96 #Botões de rádio , para opcão do nbumero de
97 #casas decimais
98 self.duascasas=Radiobutton(self.fexibir,\
99 text="2 casas",\
100 bg="gray",\
101 variable=self.decimais, \
102 command=lambda \
103 casadec="%.2f": \
104 self.mudcasadec(casadec))
105 self.quatrocasas=Radiobutton(self.fexibir,\
106 text="4 casas",\
107 value=3,\
108 variable=self.decimais, \
109 bg="gray",command=lambda \
110 casadec="%.4f":
111 self.mudcasadec(casadec))
112 self.infinitascasas=Radiobutton(self.fexibir,\
113 text="... casas ",\
114 variable=self.decimais,\
115 value=4,bg="gray",\
116 command=lambda \
117 casadec="%f": \
118 self.mudcasadec(casadec))
119
120 #Frame Criado para inserir os botoes de radio
121 #habilita/desabilita
122 self.festado=Frame(self.geral,bg="gray")
123 self.festado.pack(side="bottom")
124
125 #Botões de rádio, para habilitar/desabilitar a
126 #fita de impressão
127 self.ativado=Radiobutton(self.festado,text="Ativar",\
128 bg="gray",\
129 variable=self.habilita, \
130 command=lambda : \
131 self.habilitar(h))
132 self.desativado=Radiobutton(self.festado,text="Desativar",\
133 value=2,\
134 variable=self.habilita,\
135 bg="gray",command=lambda h=2: \
136 self.habilitar(h))
137
138 #Espaco para melhor posicionar os botoes habilita/desabilita
139 self.espaco=Label(self.festado,text=" \
140 ",bg="gray")
141 self.espaco.pack(side="left")
142
143 #Exibe os Botões de rádio , para habilitar ou desabilitar
144 #a fita
145 self.ativado.pack(side="left",padx=12,anchor=W)
146 self.desativado.pack(side="left",padx=4,anchor=W)
147
148
149 # Insere a caixa de Texto que será utilizada para
150 #fazer a fita de impressão
151 self.ffita=Frame(self.geral)
152 self.ffita.pack(side="right",padx=15,pady=5)
153 self.sb=Scrollbar(self.ffita)
154 self.fita=Text(self.ffita,width=23,height=16,\
155 bg="white",\
156 yscrollcommand=self.sb.set,\
157 relief="ridge")
158 self.sb["command"] = self.fita.yview
159 self.fita.pack(side="left",padx=0)
160 self.sb.pack(side="right",fill=Y)
161
162
163 ## WIDGETS NO FRAME ZERO #####################
164 #Botao para reiniciar a calculadora
165 self.c=Button(self.fzero,text="C",fg="red",\
166 width=7,command=self.zera)
167 #Botao para limpar apenas o que esta no visor
168 self.ce=Button(self.fzero,text="CE",fg="red",\
169 width=7,command=self.zeraprim)
170 #Botao Backspace
171 self.back=Button(self.fzero,text="Backspace",\
172 fg="red",width=10,\
173 command=self.volta)
174 #Label para organizar o programa
175 self.v=StringVar()
176 self.v.set(" ")
177 self.space1=Label(self.fzero,bg="gray",\
178 textvariable=self.v,\
179 relief="groove")
180 ##############################################
181
182
183
184 ## WIDGETS NO FRAME UM #######################
185 self.mc=Button(self.fum,text="MC",fg="red",\
186 width=4,command=lambda opm='MC': \
187 self.memoria(opm))
188 self.sete=Button(self.fum,text="7",width=4,\
189 command=lambda n=7:\
190 self.write_visor(n))
191 self.oito=Button(self.fum,text="8",width=4,\
192 command=lambda n=8: \
193 self.write_visor(n))
194 self.nove=Button(self.fum,text="9",width=4,\
195 command=lambda n=9: \
196 self.write_visor(n))
197 self.div=Button(self.fum,text="/",fg="red",\
198 width=4, command=lambda sin='/': \
199 self.op(sin))
200 self.sqrt=Button(self.fum,text="sqrt",width=4,\
201 fg="blue",command=lambda \
202 n='sqrt': self.write_visor(n))
203 ##############################################
204
205 ## WIDGETS NO FRAME DOIS #####################
206 self.mr=Button(self.fdois,text="MR",fg="red",\
207 width=4,command=lambda opm='MR': \
208 self.memoria(opm))
209 self.quatro=Button(self.fdois,text="4",width=4,\
210 command=lambda n=4: \
211 self.write_visor(n))
212 self.cinco=Button(self.fdois,text="5",width=4,\
213 command=lambda n=5: \
214 self.write_visor(n))
215 self.seis=Button(self.fdois,text="6",width=4,\
216 command=lambda n=6: \
217 self.write_visor(n))
218 self.mult=Button(self.fdois,text="*",fg="red",\
219 width=4 ,command=lambda sin='*': \
220 self.op(sin))
221 self.umx=Button(self.fdois,text="1/x",width=4,\
222 fg="blue",command=lambda n='1/x'\
223 : self.write_visor(n))
224 ###############################################
225
226 ## WIDGETS NO FRAME TREIS ######################
227 self.ms=Button(self.ftreis,text="MS",fg="red",\
228 width=4,command=lambda opm='MS': \
229 self.memoria(opm))
230 self.um=Button(self.ftreis,text="1",width=4,\
231 command=lambda n=1:\
232 self.write_visor(n) )
233 self.dois=Button(self.ftreis,text="2",\
234 width=4,command=lambda n=2: \
235 self.write_visor(n))
236 self.tres=Button(self.ftreis,text="3",width=4,\
237 command=lambda n=3: self.write_visor(n))
238 self.menos=Button(self.ftreis,text="-",fg="red",\
239 width=4, command=lambda sin='-': \
240 self.op(sin) )
241 self.porcentagem=Button(self.ftreis,text="%",\
242 width=4,fg="blue",\
243 command=lambda n='%': \
244 self.write_visor(n))
245 #################################################
246
247 ## WIDGETS NO FRAME QUATRO#########################
248 self.mmais=Button(self.fquatro,text="M+",fg="red",
249 width=4,command=lambda opm='M+': \
250 self.memoria(opm))
251 self.zero=Button(self.fquatro,text="0",width=4,\
252 command=lambda n=0: \
253 self.write_visor(n))
254 self.virg=Button(self.fquatro,text=",",width=4,\
255 command=lambda n='.': \
256 self.write_visor(n))
257 self.maismenos=Button(self.fquatro,fg="blue",text="+/-",\
258 width=4, command=lambda n=-1: \
259 self.write_visor(n))
260 self.mais=Button(self.fquatro,fg="red",text="+",width=4, \
261 command=lambda sin='+': self.op(sin))
262 self.igual=Button(self.fquatro,text="=",fg="red",width=4,\
263 command=lambda sin="=": self.op(sin))
264 ####################################################
265
266 ## WIDGETS NO FRAME CINCO#########################
267 self.mmenos=Button(self.fcinco,text="M-",fg="red",
268 width=4,command=lambda opm='M-': \
269 self.memoria(opm))
270 self.centena=Button(self.fcinco,fg="brown",text="00",\
271 width=4, command=lambda n=100: \
272 self.write_visor(n))
273 self.milhares=Button(self.fcinco,fg="brown",text="000",\
274 width=4, command=lambda n=1000: \
275 self.write_visor(n))
276 self.mmenos=Button(self.fcinco,text="M-",fg="red",
277 width=4,command=lambda opm='M-': \
278 self.memoria(opm))
279 self.seno=Button(self.fcinco,text="sen",fg="brown",
280 width=4,command=lambda n='sen': \
281 self.write_visor(n))
282 self.cosseno=Button(self.fcinco,text="cos",fg="brown",
283 width=4,command=lambda n='cos': \
284 self.write_visor(n))
285 self.tangente=Button(self.fcinco,text="tan",fg="brown",
286 width=4,command=lambda n='tan': \
287 self.write_visor(n))
288 ####################################################
289
290
291 #Frame fexibir
292 self.fexibir.pack(padx=10,pady=10)
293
294 self.visor.pack(ipadx="3")
295 self.duascasas.pack(side="left",padx=12,anchor=W)
296 self.quatrocasas.pack(side="left",padx=4,anchor=W)
297 self.infinitascasas.pack(side="left",padx=4,anchor=W)
298
299 #Frame fzero
300 self.fzero.pack()
301
302 self.space1.pack(side="left",padx="5")
303 self.c.pack(side="left",pady="5",padx="3")
304 self.ce.pack(side="left",pady="5",padx="3")
305 self.back.pack(side="left",pady="5",padx="3")
306
307
308 #Frame fum
309 self.fum.pack(padx=2)
310
311 self.mc.pack(side="left",padx=4,pady=2)
312 self.sete.pack(side="left",padx=2,pady=2)
313 self.oito.pack(side="left",padx=2,pady=2)
314 self.nove.pack(side="left",padx=2,pady=2)
315 self.div.pack(side="left",padx=2,pady=2)
316 self.sqrt.pack(side="left",padx=2,pady=2)
317
318 #Frame fdois
319 self.fdois.pack(padx=2)
320
321 self.mr.pack(side="left",padx=4,pady=2)
322 self.quatro.pack(side="left",padx=2,pady=2)
323 self.cinco.pack(side="left",padx=2,pady=2)
324 self.seis.pack(side="left",padx=2,pady=2)
325 self.mult.pack(side="left",padx=2,pady=2)
326 self.umx.pack(side="left",padx=2,pady=2)
327
328 #Frame ftreis
329 self.ftreis.pack(padx=2)
330
331 self.ms.pack(side="left",padx=4,pady=2)
332 self.um.pack(side="left",padx=2,pady=2)
333 self.dois.pack(side="left",padx=2,pady=2)
334 self.tres.pack(side="left",padx=2,pady=2)
335 self.menos.pack(side="left",padx=2,pady=2)
336 self.porcentagem.pack(side="left",padx=2,pady=2)
337
338 #Frame fquatro
339 self.fquatro.pack(padx=2)
340
341 self.mmais.pack(side="left",padx=4,pady=2)
342 self.maismenos.pack(side="left",padx=2,pady=2)
343 self.zero.pack(side="left",padx=2,pady=2)
344 self.virg.pack(side="left",padx=2,pady=2)
345 self.mais.pack(side="left",padx=2,pady=2)
346 self.igual.pack(side="left",padx=2,pady=2)
347
348 #Frame fcinco
349 self.fcinco.pack(padx=2)
350
351 self.mmenos.pack(side="left",padx=4,pady=2)
352 self.centena.pack(side="left",padx=2,pady=2)
353 self.milhares.pack(side="left",padx=2,pady=2)
354 self.seno.pack(side="left",padx=2,pady=2)
355 self.cosseno.pack(side="left",padx=2,pady=2)
356 self.tangente.pack(side="left",padx=2,pady=2)
357
358
359 # Variais booleanas da classe
360 self.z=0
361 self.w=1
362 self.i=0
363 self.ty=0
364 self.prim=0
365 self.h=0
366 self.sa=0
367 self.sinais=1
368 self.i=0
369 self.prim_op=0
370
371 #Controle do numero de vezes que o usario clica
372 #na virgula
373 self.ponto=1
374
375 #Variaveis usadas para guardar os valores do visor
376 self.atual=0
377 self.num=0
378 self.mem=0
379
380
381 self.casadec="%.2f"
382
383 #metodo para mudar o numero de casas decimais
384 def mudcasadec(self,casadec):
385 self.casadec=casadec
386
387
388 #-#--------------- Função aritmética op -------------#-#
389 def op(self,sin):
390 if (self.w==0) and self.prim_op==1:
391 self.num=float(self.visor.get())
392 self.atual=float(self.visor.get())
393 self.fita.insert(INSERT,self.num)
394 self.sinal=sin
395 self.w=1
396 self.z=1
397 self.i=0
398 self.ty=1
399 self.divi=0
400 self.sinais=1
401 self.prim=1
402 self.ponto=1
403 if self.prim==0:
404 self.ty=1
405
406 elif self.prim_op==1:
407
408 if sin=="=" and self.i==1 and self.ty==1:
409 self.sinais=1
410
411 if sin!="=" and self.ty==1:
412 self.sinal=sin
413 self.sinais=0
414 self.atual=float(self.visor.get())
415
416 if self.ty==0:
417 self.atual=float(self.visor.get())
418
419 if self.sa==1 and self.ty==1:
420 self.num=float(self.visor.get())
421 self.sa=0
422
423 if self.sinal=='+' and self.sinais==1:
424 self.num=self.num + self.atual
425 self.i=0
426 elif self.sinal=='-' and self.sinais==1:
427 self.num=self.num - self.atual
428 elif self.sinal=='/' and self.sinais==1 and \
429 self.atual!=0:
430 self.i=0
431 self.num=self.num / self.atual
432 elif self.sinal=='/' and self.atual==0 and \
433 self.sinais==1:
434 self.zera()
435 self.visor.delete(0,END)
436 self.visor.insert(INSERT,"Imposivel dividir")
437 self.divi=1
438 self.sinais=0
439 elif self.sinal=='*' and self.prim==1 and \
440 self.sinais==1:
441 self.i=0
442 self.num=self.num * self.atual
443
444 if self.divi==0:
445 self.visor.delete(0,END)
446 self.visor.insert(END,self.casadec %self.num)
447 self.prim=1
448 if (self.divi==0 and self.ty==0) or self.sinais==1:
449
450 self.fita.insert(INSERT,"\n"+self.sinal)
451 self.fita.insert(INSERT,"\n"+str(self.atual))
452 self.fita.insert(INSERT,"\n"+"=")
453 self.fita.insert(INSERT,"\n "+\
454 self.casadec %self.num)
455
456 if sin!="=" and sin!=self.sinal and self.ty==0:
457 self.sinais=0
458 self.sinal=sin
459 self.sinal=sin
460
461 self.ty=1
462 self.i=0
463 self.w=1
464 self.z=1
465 self.div=0
466 self.sinais=1
467 self.ponto=1
468 #-#-------------- Fim da função aritmética op ---------#-#
469
470
471
472 #+#------- Função para escrever os numeros no visor ----#+#
473 def write_visor(self,n):
474 if (self.z==1) and n!=-1 and n!="1/x" and n!="sqrt" \
475 and n!="%" and n!='.' and n!=100 and n!=1000 \
476 and n!="sen" and n!="cos" \
477 and n!="tan":
478 if self.i==0:
479 self.visor.delete(0,END)
480
481 self.visor.insert(INSERT,n)
482 self.w=1
483 self.z=1
484 self.i=1
485 self.ty=0
486 self.prim=1
487 self.i=1
488 self.prim_op=1
489
490 elif self.z==0 and n!=-1 and n!="1/x" and n!="sqrt" \
491 and n!="%" and n!='.'and n!=100 and n!=1000 \
492 and n!="sen" and n!="cos" \
493 and n!="tan":
494 if self.i==0:
495 self.visor.delete(0,END)
496 self.visor.insert(INSERT,n)
497
498 self.w=0
499 self.i=1
500 self.ty=0
501 self.i=1
502 self.prim_op=1
503
504 elif n==-1 and self.prim_op==1:
505 self.la=(float(self.visor.get())*(-1))
506 self.visor.delete(0,END)
507 self.visor.insert(END,self.casadec %self.la)
508 if self.ty==1:
509 self.fita.insert(INSERT,"\n"+"*(-1)")
510 self.fita.insert(INSERT,"\n"+"=")
511 self.fita.insert(INSERT,"\n "+\
512 self.casadec %self.la)
513 self.sa=1
514 self.i=0
515 self.prim_op=1
516
517
518 elif n=="1/x" and self.prim_op==1:
519 try:
520 self.la=float(1/float(self.visor.get()))
521 self.visor.delete(0,END)
522 self.visor.insert(END,self.casadec %self.la)
523 if self.ty==1:
524 self.fita.insert(INSERT,"**(-1)")
525 self.fita.insert(INSERT,"\n"+"=")
526 self.fita.insert(INSERT,"\n "+\
527 self.casadec %self.la)
528 self.sa=1
529 self.i=0
530 except:
531 self.visor.delete(0,END)
532
533 elif n=="sqrt" and self.prim_op==1:
534 try:
535 self.la=sqrt(float(self.visor.get()))
536 self.visor.delete(0,END)
537 self.visor.insert(END,self.casadec %self.la)
538 if self.ty==1:
539 self.fita.insert(INSERT,"\n"+"sqrt")
540 self.fita.insert(INSERT,"\n"+"=")
541 self.fita.insert(INSERT,"\n "+\
542 self.casadec %self.la)
543
544 self.sa=1
545 self.i=0
546 except:
547 self.zera()
548 self.visor.delete(0,END)
549 self.visor.insert(END,\
550 "Valor invalido para função")
551
552 elif n=="sen" and self.prim_op==1:
553 try:
554 self.la=sin((float(self.visor.get())/180)*pi)
555 self.visor.delete(0,END)
556 self.visor.insert(END,self.casadec %self.la)
557 if self.ty==1:
558 self.fita.insert(INSERT,"\n"+"sen")
559 self.fita.insert(INSERT,"\n"+"=")
560 self.fita.insert(INSERT,"\n " \
561 +self.casadec %self.la)
562 self.sa=1
563 self.i=0
564 except:
565 self.zera()
566 self.visor.delete(0,END)
567 self.visor.insert(END,\
568 "Valor invalido para função")
569
570 elif n=="cos" and self.prim_op==1:
571 try:
572
573 self.la=cos((float(self.visor.get())/180)*pi)
574 self.visor.delete(0,END)
575 self.visor.insert(END,self.casadec %self.la)
576 if self.ty==1:
577 self.fita.insert(INSERT,"\n"+"cos")
578 self.fita.insert(INSERT,"\n"+"=")
579 self.fita.insert(INSERT,"\n "\
580 +self.casadec %self.la)
581 self.sa=1
582 self.i=0
583 except:
584 self.zera()
585 self.visor.delete(0,END)
586 self.visor.insert(END,"Valor invalido para função")
587
588 elif n=="tan" and self.prim_op==1:
589 try:
590 self.la=tan((float(self.visor.get())/180)*pi)
591 self.visor.delete(0,END)
592 self.visor.insert(END,self.casadec %self.la)
593 if self.ty==1:
594 self.fita.insert(INSERT,"\n"+"tan")
595 self.fita.insert(INSERT,"\n"+"=")
596 self.fita.insert(INSERT,"\n "\
597 +self.casadec %self.la)
598 self.sa=1
599 self.i=0
600 except:
601 self.zera()
602 self.visor.delete(0,END)
603
604 elif n=="%" and self.ty==0 and self.prim_op==1 \
605 and self.z==1:
606 self.perc=float(self.visor.get())
607 self.la=self.num*(float(self.visor.get()))/100
608 self.visor.delete(0,END)
609 self.visor.insert(END,self.casadec %self.la)
610 if self.ty==1:
611 self.fita.insert(INSERT,"\n"+"*")
612 self.fita.insert(INSERT,"\n"+\
613 str(self.perc/100))
614 self.fita.insert(INSERT,"\n"+"%")
615 self.fita.insert(INSERT,"\n"+"=")
616 self.fita.insert(INSERT,"\n "+\
617 self.casadec %self.la)
618 self.sa=1
619 self.i=1
620
621 elif n=="%" and self.ty==1 and self.prim_op==1 \
622 and self.z==1:
623 self.perc=float(self.visor.get())
624 self.la=((float(self.visor.get()))*\
625 (float(self.visor.get())))/100
626 self.visor.delete(0,END)
627 self.visor.insert(END,self.casadec %self.la)
628 if self.ty==1:
629 self.fita.insert(INSERT,"\n"+"*")
630 self.fita.insert(INSERT,"\n"+ \
631 str(self.perc/100))
632 self.fita.insert(INSERT,"\n"+"=")
633 self.fita.insert(INSERT,"\n "+\
634 self.casadec %self.la)
635 self.sa=1
636 self.i=1
637
638 elif n=="%" and self.ty==0 and self.prim_op==1 \
639 and self.z==0:
640 self.perc=float(self.visor.get())
641 self.la=((float(self.visor.get()))*(0))/100
642 self.visor.delete(0,END)
643 self.visor.insert(END,self.casadec %self.la)
644 if self.ty==0:
645 self.fita.insert(INSERT,"\n"+"*")
646 self.fita.insert(INSERT,"\n"+str(0/100))
647 self.fita.insert(INSERT,"\n"+"=")
648 self.fita.insert(INSERT,"\n "\
649 +self.casadec %self.la)
650 self.sa=1
651 self.i=1
652
653
654 elif n=='.' and self.ponto==1:
655 self.visor.insert(INSERT,n)
656 if self.z==0:
657 self.fita.insert(INSERT,n)
658 self.ponto=0
659
660
661 elif n==100 and self.prim_op==1:
662 try:
663 self.la=(float(self.visor.get()))*n
664 self.visor.delete(0,END)
665 self.visor.insert(END,self.casadec %self.la)
666 if self.ty==1:
667 self.fita.insert(INSERT,"\n"+"*100")
668 self.fita.insert(INSERT,"\n"+"=")
669 self.fita.insert(INSERT,"\n "\
670 +self.casadec %self.la)
671 self.sa=1
672 self.i=1
673 except:
674 self.zera()
675 self.visor.delete(0,END)
676 self.visor.insert(END,\
677 "Valor invalido para função")
678
679 elif n==1000 and self.prim_op==1:
680 try:
681 self.la=(float(self.visor.get()))*n
682 self.visor.delete(0,END)
683 self.visor.insert(END,self.casadec %self.la)
684 if self.ty==1:
685 self.fita.insert(INSERT,"\n"+"*1000")
686 self.fita.insert(INSERT,"\n"+"=")
687 self.fita.insert(INSERT,"\n "\
688 +self.casadec %self.la)
689 self.sa=1
690 self.i=1
691 except:
692 self.zera()
693 self.visor.delete(0,END)
694 self.visor.insert(END,"Valor invalido para função")
695 #-#--------- Fim da função write_visor ------------#-#
696
697
698
699 #+#-------Função para manipular a memória----------#+#
700
701 def memoria(self,opm):
702 if opm=="MC":
703 self.mem=0
704 self.v.set(" ")
705
706 elif opm=="MR":
707 self.visor.delete(0,END)
708 self.visor.insert(INSERT,str(self.mem))
709 self.i=0
710 self.ty=0
711 elif opm=="MS":
712 self.mem=float(self.visor.get())
713 self.v.set(" M ")
714 self.i=0
715 elif opm=="M+":
716 self.mem=self.mem + float(self.visor.get())
717 self.v.set(" M ")
718 self.i=0
719 elif opm=="M-":
720 self.mem=self.mem - float(self.visor.get())
721 self.v.set(" M ")
722 self.i=0
723 #-#------------------- Fim Memoria ---- -------------#-#
724
725
726 #+#------- Função para reiniciar a calculadora ------#+#
727 def zera(self):
728 self.z=0
729 self.w=1
730 self.atual=0
731 self.i=0
732 self.ty=0
733 self.num=0
734 self.prim=0
735 self.h=0
736 self.sa=0
737 self.sinais=1
738 self.i=0
739 self.prim_op=0
740 self.ponto=1
741 self.visor.delete(0,END)
742 self.visor.insert(INSERT,0)
743 self.fita.delete('1.0','90.0')
744 #-#----------------- Fim da função zera -------------#-#
745
746
747 #+#-------------------- Função CE -------------------#+#
748 def zeraprim(self):
749 if self.ty==0:
750 self.visor.delete(0,END)
751 self.visor.insert(INSERT,0)
752 self.i=0
753
754 else:
755 self.zera()
756 #-#----------------- Fim da função CE ----------------#-#
757
758
759 #+#-------------- Função volta(Backspace) ------------#+#
760 def volta(self):
761 if self.ty==0 and self.prim_op==1:
762 tam = len(self.visor.get())
763 self.visor.delete(tam-1,tam)
764 #-#----------------- Fim da função volta--------------#-#
765
766
767 #+#------------------- Função Habilita ---------------#+#
768 def habilitar(self,h):
769 if h==2:
770 self.fita["state"]="disabled"
771 if h==1:
772 self.fita["state"]="normal"
773 #-#---------------- Fim da função Habilita-------------#-#
774
775
776 #+#-----------------Janela Sobre(Autores)--------------#+#
777 def autores(self):
778 s = """
779 Autores:
780 Vinícius Rodrigues da Cunha Perallis
781 UNESP, Rio Claro
782 Instituto de Geociências e Ciências Exatas IGCE
783 Email: perallis@rc.unesp.br
784 """
785 message_box = Toplevel()
786 message_box.title("Autores:")
787 message_box_fr = Frame(message_box)
788 message_box_fr.pack(expand=0, fill=BOTH)
789 message_lb = Label(message_box_fr, text = s,\
790 justify="left")
791 message_lb.grid(row=0, column=0)
792 quitbutton = Button(message_box_fr,\
793 text = 'Fechar', \
794 command=message_box.destroy,\
795 borderwidth=1)
796 quitbutton.grid(row=1, column=0)
797 #-#----------------Fim de Janela Sobre(Autores)----------#-#
798
799
800 #+#------------------Janela Sobre(Licenca)---------------#+#
801 def licenca(self):
802 s = """
803 Licença: O uso deste programa é gratuito.
804 Seu código pode ser melhorado, ou alterado
805 conforme a nescessidade do usuário
806
807 Email: perallis@rc.unesp.br
808 """
809 message_box = Toplevel()
810 message_box.title("Licença:")
811 message_box_fr = Frame(message_box)
812 message_box_fr.pack(expand=0, fill=BOTH)
813 message_lb = Label(message_box_fr, text = s,\
814 justify="left")
815 message_lb.grid(row=0, column=0)
816 quitbutton = Button(message_box_fr,\
817 text = 'Fechar', \
818 command=message_box.destroy,\
819 borderwidth=1)
820 quitbutton.grid(row=1, column=0)
821 #-#-----------Fim de Janela Licenca(Autores)-------------#-#
822
823
824 #+#------------------Janela ComoUsar(Licenca)------------#+#
825 def comousar(self):
826 s = """
827 Como Usar: Esta é uma calculadora que opera como qualquer
828 outra calculadora(semelhante a do windows).
829 A unica diferença,é que ela imita uma fita
830 de impressão, como uma calculadora comercial
831
832 Email: perallis@rc.unesp.br
833 """
834 message_box = Toplevel()
835 message_box.title("Como usar?")
836 message_box_fr = Frame(message_box)
837 message_box_fr.pack(expand=0, fill=BOTH)
838 message_lb = Label(message_box_fr, text = s,\
839 justify="left")
840 message_lb.grid(row=0, column=0)
841 quitbutton = Button(message_box_fr, \
842 text = 'Fechar', \
843 command=message_box.destroy,\
844 borderwidth=1)
845 quitbutton.grid(row=1, column=0)
846 #-#----------------Fim de Janela ComoUsar(Autores)-------#-#
847
848
849 #+#-------------- Função para sair do programa ----------#+#
850 def sair(self):
851 root.destroy()
852 #-#--------------------- Fim Fnção sair -----------------#-#
853
854
855 # root Intacia-se pela classe Tk() e inicia a aplicação
856 root=Tk()
857 aplicativo=Calculadora(root)
858 root.mainloop()