1
2
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
33 from Tkinter import *
34
35
36
37 class Calculadora:
38
39 def __init__(self,parent):
40 self.myapp=parent
41 self.myapp.title("Calculadora - Phy")
42
43 self.geral=Frame(self.myapp,bg="gray")
44 self.geral.pack()
45
46
47
48
49
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
60
61 self.visor=Entry(self.fexibir,width=23,bg="white",fg="blue",justify="right")
62 self.visor.insert(INSERT,0)
63
64 self.titulo=Label(self.geral,text=" CALCULADORA PYTHON
65 ",bg="gray",fg="black",font=('Helvetica','10','bold'))
66
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
79
80
81
82 self.c=Button(self.fzero,text="C",bg="white",width=4,command=self.zera)
83
84 self.space1=Label(self.fzero,bg="gray",text="
85 ")
86
87
88 self.igual=Button(self.fzero,text="=",bg="white",width=4,command=lambda sin="": self.op(sin))
89
90
91
92
93
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
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
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
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
146 self.titulo.pack()
147
148
149 self.fexibir.pack()
150
151 self.visor.pack(ipadx="3")
152
153
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
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
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
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
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
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
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
260 aritmética op --------------------------------------
261
262
263
264
265
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
299 write_visor --------------------------------------
300
301
302
303
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
316 zera-------------------------------------------
317
318
319
320
321
322 root=Tk()
323 aplicativo=Calculadora(root)
324 root.mainloop()