associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

Diferenças para "CalculadoraComercial"

Diferenças entre as versões de 5 e 7 (2 versões de distância)
Revisão 5e 2006-04-25 12:46:27
Tamanho: 10486
Comentário:
Revisão 7e 2006-04-25 17:29:53
Tamanho: 11115
Comentário:
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()