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

Diferenças para "CalculadoraComercial"

Diferenças entre as versões de 1 e 11 (10 versões de distância)
Revisão 1e 2006-04-25 12:34:14
Tamanho: 10501
Comentário:
Revisão 11e 2006-04-25 18:02:53
Tamanho: 11346
Comentário:
Deleções são marcadas assim. Adições são marcadas assim.
Linha 1: Linha 1:
{{{
#!python


Linha 8: Linha 13:
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 20:
Sistema Operacional: Linux Sistema Operacional: Linux, Windows

Email:perallis@rc.unesp.br

Linha 29: Linha 42:
        #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 59:
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 62:
        # 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 77:
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 84:
        ## WIDGETS NO FRAME ZERO
#########################################################
        ## WIDGETS NO FRAME ZERO ###########################  
Linha 62: Linha 88:
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 92:
        self.space1=Label(self.fzero,bg="gray",text="
")

self.space1=Label(self.fzero,bg="gray",\
                         
text=" ")
Linha 68: Linha 97:
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 229:
    ###------------------------------Função para realizar as operações
aritiméticas --------------------------###
    ###---Função para realizar as operações aritiméticas ------###
Linha 239: Linha 284:
    ###---------------------------------------- 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 322:
    ###---------------------------------------- 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 339:
    ###------------------------------------------- Fim da função
zera-------------------------------------------###

###------------------ Fim da função zera---------------------###
Linha 305: Linha 349:
}}}

   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()