10486
Comentário:
|
11115
|
Deleções são marcadas assim. | Adições são marcadas assim. |
Linha 2: | Linha 2: |
#!python |
|
Linha 10: | Linha 14: |
impressão | Finalidade: Calculadora que opera semelhante a calculadora do windows, alem de conter uma caixa de texto que imita uma fita de impressão |
Linha 12: | Linha 20: |
Sistema Operacional: Linux | Sistema Operacional: Linux, Windows Email:perallis@rc.unesp.br Finalidade: Calculadora que opera semelhante a calculadora do windows, alem de conter uma caixa de texto que imita uma fita de impressão Interpretador: Python 2.4.1 Sistema Operacional: Linux, Windows Email:perallis@rc.unesp.br |
Linha 30: | Linha 51: |
#Cria os frames nescessarios para a disposição dos widgets no programa |
#Cria os frames nescessarios para a disposição dos widgets no programa #Cria os frames nescessarios para a disposição dos widgets no programa |
1 #!/usr/bin/python
2 # -*- coding: cp1252 -*-
3
4 """
5 Autor: Vinicius Rodrigues da Cunha Perallis
6 Data: 19/04/2006
7 20/04/2006
8 Projeto: Calculadora Comercial
9
10 Finalidade: Calculadora que opera semelhante a calculadora
11 do windows, alem de conter uma caixa de
12 texto que imita uma fita de impressão
13
14 Interpretador: Python 2.4.1
15 Sistema Operacional: Linux, Windows
16
17 Email:perallis@rc.unesp.br
18
19
20 Finalidade: Calculadora que opera semelhante a calculadora
21 do windows, alem de conter uma caixa de
22 texto que imita uma fita de impressão
23
24 Interpretador: Python 2.4.1
25 Sistema Operacional: Linux, Windows
26
27 Email:perallis@rc.unesp.br
28
29 """
30
31
32 #Importa todas funcoes do modulo Tkinter
33 from Tkinter import *
34
35
36 #Classe Principal que executa o aplicativo Calculadora
37 class Calculadora:
38
39 def __init__(self,parent):
40 self.myapp=parent
41 self.myapp.title("Calculadora - Phy")
42 #Cria o frame principa
43 self.geral=Frame(self.myapp,bg="gray")
44 self.geral.pack()
45
46
47 #Cria os frames nescessarios para a disposição dos widgets no programa
48
49 #Cria os frames nescessarios para a disposição dos widgets no programa
50
51 self.fexibir=Frame(self.geral,bg="gray")
52 self.fzero=Frame(self.geral,bg="gray")
53 self.fum=Frame(self.geral,bg="gray")
54 self.fdois=Frame(self.geral,bg="gray")
55 self.ftreis=Frame(self.geral,bg="gray")
56 self.fquatro=Frame(self.geral,bg="gray")
57
58
59 #Caixa de texto, que servirá para mostrar os numeros
60
61 self.visor=Entry(self.fexibir,width=23,bg="white",fg="blue",justify="right")
62 self.visor.insert(INSERT,0)
63 # Frame geral: Escreve um titulo na primeira linha do programa
64 self.titulo=Label(self.geral,text=" CALCULADORA PYTHON
65 ",bg="gray",fg="black",font=('Helvetica','10','bold'))
66 # Insere a cixa de Texto que seá utilizada para fazer a fita de
67 impressão
68 self.ffita=Frame(self.geral)
69 self.ffita.pack(side="right",padx=15)
70 self.sb=Scrollbar(self.ffita)
71
72 self.fita=Text(self.ffita,width=23,height=13,bg="white",yscrollcommand=self.sb.set)
73 self.sb["command"] = self.fita.yview
74 self.fita.pack(side="left",padx=0)
75 self.sb.pack(side="right",fill=Y)
76
77
78 ## WIDGETS NO FRAME ZERO
79 #########################################################
80 #Botao para reiniciar a calculadora
81
82 self.c=Button(self.fzero,text="C",bg="white",width=4,command=self.zera)
83 #Label para organizar o programa
84 self.space1=Label(self.fzero,bg="gray",text="
85 ")
86 #Botao igual
87
88 self.igual=Button(self.fzero,text="=",bg="white",width=4,command=lambda sin="": self.op(sin))
89
90 ###################################################################################
91
92
93 ## WIDGETS NO FRAME UM
94 ############################################################
95 self.sete=Button(self.fum,text="7",width=4,command=lambda n=7:
96 self.write_visor(n))
97 self.oito=Button(self.fum,text="8",width=4,command=lambda n=8:
98 self.write_visor(n))
99 self.nove=Button(self.fum,text="9",width=4,command=lambda n=9:
100 self.write_visor(n))
101 self.div=Button(self.fum,text="/",fg="red",width=4,
102 command=lambda sin='/': self.op(sin))
103
104 ###################################################################################
105
106 ## WIDGETS NO FRAME DOIS
107 ############################################################
108 self.quatro=Button(self.fdois,text="4",width=4,command=lambda
109 n=4: self.write_visor(n))
110 self.cinco=Button(self.fdois,text="5",width=4,command=lambda
111 n=5: self.write_visor(n))
112 self.seis=Button(self.fdois,text="6",width=4,command=lambda
113 n=6: self.write_visor(n))
114 self.mult=Button(self.fdois,text="*",fg="red",width=4
115 ,command=lambda sin='*': self.op(sin))
116
117 ###################################################################################
118
119 ## WIDGETS NO FRAME TREIS
120 ##########################################################
121 self.um=Button(self.ftreis,text="1",width=4,command=lambda n=1:
122 self.write_visor(n) )
123 self.dois=Button(self.ftreis,text="2",width=4,command=lambda
124 n=2: self.write_visor(n))
125 self.tres=Button(self.ftreis,text="3",width=4,command=lambda
126 n=3: self.write_visor(n))
127 self.menos=Button(self.ftreis,text="-",fg="red",width=4,
128 command=lambda sin='-': self.op(sin) )
129
130 ###################################################################################
131
132 ## WIDGETS NO FRAME
133 QUATRO#########################################################
134 self.zero=Button(self.fquatro,text="0",width=4,command=lambda
135 n=0: self.write_visor(n))
136 self.virg=Button(self.fquatro,text=",",width=4,command=lambda
137 n='.': self.write_visor(n))
138 self.maismenos=Button(self.fquatro,fg="red",text="+/-",width=4,
139 command=lambda n=-1: self.write_visor(n))
140 self.mais=Button(self.fquatro,fg="red",text="+",width=4,
141 command=lambda sin='+': self.op(sin))
142
143 ###################################################################################
144
145 #Frame fgeral
146 self.titulo.pack()
147
148 #Frame fexibir
149 self.fexibir.pack()
150
151 self.visor.pack(ipadx="3")
152
153 #Frame fzero
154 self.fzero.pack()
155
156 self.c.pack(side=LEFT,fill=X,pady="5",padx="2")
157 self.igual.pack(side=LEFT,fill=X,pady="5",padx="2")
158 self.space1.pack()
159
160 #Frame fum
161 self.fum.pack()
162
163 self.sete.pack(side="left",padx=2,pady=2)
164 self.oito.pack(side="left",padx=2,pady=2)
165 self.nove.pack(side="left",padx=2,pady=2)
166 self.div.pack(side="left",padx=2,pady=2)
167
168 #Frame fdois
169 self.fdois.pack()
170 self.seis.pack(side="left",padx=2,pady=2)
171 self.cinco.pack(side="left",padx=2,pady=2)
172 self.quatro.pack(side="left",padx=2,pady=2)
173 self.mult.pack(side="left",padx=2,pady=2)
174
175 #Frame ftreis
176 self.ftreis.pack()
177 self.tres.pack(side="left",padx=2,pady=2)
178 self.dois.pack(side="left",padx=2,pady=2)
179 self.um.pack(side="left",padx=2,pady=2)
180 self.menos.pack(side="left",padx=2,pady=2)
181
182 #Frame fquatro
183 self.fquatro.pack()
184 self.maismenos.pack(side="left",padx=2,pady=2)
185 self.zero.pack(side="left",padx=2,pady=2)
186 self.virg.pack(side="left",padx=2,pady=2)
187 self.mais.pack(side="left",padx=2,pady=2)
188
189 # Variais da classe
190 self.z=0
191 self.w=1
192 self.atual=0
193 self.i=0
194 self.ty=0
195 self.num=0
196 self.prim=0
197 self.h=0
198 self.sa=0
199
200
201
202
203 ###------------------------------Função para realizar as operações
204 aritiméticas --------------------------###
205
206 def op(self,sin):
207 if (self.w==0):
208 self.num=float(self.visor.get())
209 print self.num
210 self.sinal=sin
211 self.w=1
212 self.z=1
213 self.i=0
214 self.ty=0
215 self.divi=0
216 if self.prim==0:
217 self.ty=1
218
219 else :
220 if self.ty==0:
221 self.atual=float(self.visor.get())
222
223 if self.sa==1 and self.ty==1:
224 self.num=float(self.visor.get())
225 self.sa=0
226
227 if self.sinal=='+':
228 self.num=self.num + self.atual
229 elif self.sinal=='-':
230 self.num=self.num - self.atual
231 elif self.sinal=='/' and self.ty!=1 and self.atual!=0:
232 self.num=self.num / self.atual
233 elif self.sinal=='/' and self.atual==0 and self.ty!=1:
234 self.visor.delete(0,END)
235 self.visor.insert(INSERT,"Imposivel dividir")
236 self.divi=1
237 self.prim=1
238 elif self.sinal=='*' and self.ty!=1 and self.prim==1:
239 self.num=self.num * self.atual
240
241 if self.divi==0:
242 self.visor.delete(0,END)
243 self.visor.insert(END,self.num)
244 self.prim=1
245 if self.divi==0 and self.ty==0:
246 self.fita.insert(INSERT,"\n"+self.sinal)
247 self.fita.insert(INSERT,"\n"+str(self.atual))
248 self.fita.insert(INSERT,"\n"+"=")
249 self.fita.insert(INSERT,"\n"+str(self.num))
250
251
252 self.atual=0
253 self.ty=1
254 self.i=0
255 self.w=1
256 self.z=1
257 self.div=0
258 self.sinal=sin
259 ###---------------------------------------- Fim da funçõa
260 aritmética op --------------------------------------###
261
262
263
264
265 ###-------------------------------- Função para escrever os numeros
266 no visor ---------------------------------###
267 def write_visor(self,n):
268 if (self.z==1) and n!=-1:
269 if self.i==0:
270 self.visor.delete(0,END)
271
272 self.visor.insert(INSERT,n)
273 self.w=1
274 self.z=1
275 self.i=1
276 self.ty=0
277 self.prim=1
278
279
280
281 elif self.z==0 and n!=-1:
282 if self.i==0:
283 self.visor.delete(0,END)
284 self.visor.insert(INSERT,n)
285 self.fita.insert(INSERT,n)
286 self.w=0
287 self.i=1
288 self.ty=0
289 if n==-1:
290 self.la=float(self.visor.get()) * (-1)
291 self.visor.delete(0,END)
292 self.visor.insert(END,self.la)
293 self.fita.insert(INSERT,"\n"+"*(-1)")
294 self.fita.insert(INSERT,"\n"+"=")
295 self.fita.insert(INSERT,"\n"+str(self.la))
296 self.sa=1
297
298 ###---------------------------------------- Fim da funçõa
299 write_visor --------------------------------------###
300
301
302
303 ###---------------------------------- Função para reiniciar a calculadora ----------------------------------###
304 def zera(self):
305 self.num=0
306 self.z=0
307 self.w=1
308 self.atual=0
309 self.i=0
310 self.ty=0
311 self.prim=0
312 self.visor.delete(0,END)
313 self.visor.insert(INSERT,0)
314 self.fita.delete('1.0','90.0')
315 ###------------------------------------------- Fim da função
316 zera-------------------------------------------###
317
318
319
320
321 # root Intacia-se pela classe Tk() e inicia a aplicação
322 root=Tk()
323 aplicativo=Calculadora(root)
324 root.mainloop()