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