Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: slack+flux
Por U-Neeks
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Rafael José em (última atualização em 02/07/2011)   [ 2093 hits ]

Login: Räfael, 79544 pontos

   


Descrição

Lista Telefônica básica em Python

[ Download: Lista Telefonica.py ]   [ Enviar nova versão ]

[ Esconder código-fonte ]

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import shelve
from Tkinter import *
from Dialog import Dialog


class MainFrame(Frame):
    def __init__(self, parent=None):
        Frame.__init__(self, parent)
        self.grid()
        self.createWidgets()
        self.master.title("Lista Telefonica")
   
                                                                                                    
    def createWidgets(self):
        self.makeScreen()
        self.makeToolBar()
                                                                                                    
    def makeScreen(self):
        self.nome = StringVar()
        self.endereco = StringVar()
        self.telefone = StringVar()
   self.by = StringVar()

        Label(self, text="Nome:").grid(row=1, sticky=W)
        Label(self, text="Telefone:").grid(row=2, sticky=W)
        Label(self, text="Endereço:").grid(row=3, sticky=W)
   Label(self, text="Lista Telefonica em Python").grid(row=4, sticky=W)

        Entry(self, textvariable=self.nome).grid( \
              row=1, column=1, sticky=W+E)
        Entry(self, textvariable=self.endereco).grid( \
              row=2, column=1, sticky=W+E)
        Entry(self, textvariable=self.telefone).grid( \
              row=3, column=1, sticky=W+E)
    

    def makeToolBar(self):
        toolbar = Frame(self)
        toolbar.grid(row=5, columnspan=2)

        Button(toolbar, text="Adicionar", \
                 command=self.adicionar).grid(row=0,column=0)
        Button(toolbar, text="Gravar", \
                 command=self.gravar).grid(row=0,column=1)
        Button(toolbar, text="Remover", \
                 command=self.remover).grid(row=0,column=2)
        Button(toolbar, text="Procurar", \
                 command=self.procurar).grid(row=0,column=3)
        Button(toolbar, text="Listar", \
                 command=self.listar).grid(row=0,column=4)
        Button(toolbar, text="Sair", \
                 command=self.sair).grid(row=0,column=5)

    def adicionar(self):
        nome = self.nome.get()
        if not len(nome):
            Dialog(self, title="Erro", text="Nome inválido", \
                         bitmap='error', default=0, strings=('OK',))
            return

        if self.db.has_key(nome):
            Dialog(self, title="Erro", text="Nome já cadastrado", \
                         bitmap='error', default=0, strings=('OK',))
            return

        self.db[nome] = (self.endereco.get(), self.telefone.get())
        self.limpaCampos()

    def gravar(self):
        nome = self.nome.get()
        if not len(nome):
            Dialog(self, title="Erro!", text="Nome inválido",
                         bitmap='error', default=0, strings=('OK',))
            return

        if not self.db.has_key(nome):
            Dialog(self, title="Erro", \
                         text="Este nome não esta registrado, use o botão adicionar", \
                         bitmap='error', default=0, strings=('OK',))
            return

        self.db[nome] = (self.endereco.get(), self.telefone.get())
        self.limpaCampos()

    def limpaCampos(self):
        self.nome.set("")
        self.telefone.set("")
        self.endereco.set("")
                                                                                                    
    def procurar(self):
        nome = self.nome.get()
        if not len(nome):
            Dialog(self, title="Erro", text="Este Nome não é válido!", \
                         bitmap='error', default=0, strings=('OK',))
            return

        if not self.db.has_key(nome):
            Dialog(self, title="Erro!", text="Nome inregistrado", \
                         bitmap='error', default=0, strings=('OK',))
            return

        self.telefone.set(self.db.get(nome, "")[0])
        self.endereco.set(self.db.get(nome, "")[1])

    def remover(self):
        nome = self.nome.get()
        if not len(nome):
            Dialog(self, title="Erro", text="Este Nome não é válido", \
                         bitmap='error', default=0, strings=('OK',))
            return

        if not self.db.has_key(nome):
            Dialog(self, title="Erro", text="Nome inregistrado", \
                         bitmap='error', default=0, strings=('OK',))
            return

        self.telefone.set(self.db.get(nome, "")[0])
        self.endereco.set(self.db.get(nome, "")[1])

        resposta = Dialog(self, title="Confirmação de seguranca", \
                   text="Deseja mesmo remover?", \
                   bitmap='question', default=1, strings=('Sim', 'Não'))
        if resposta.num == 0:
            del self.db[nome]
            self.limpaCampos()

    def listar(self):
        print "%-30s | %-20s | %-10s" % ("Nome", "Telefone", "Endereço")
        print "%-30s-+-%-20s-+-%-10s" % ("-" * 30, "-" * 20, "-" * 10)
        for k in self.db.keys():
            print "%-30s | %-20s | %-10s" % (k, self.db[k][0], \
                  self.db[k][1])
        print

    def sair(self):
        resposta = Dialog(self, title="Confirmação", \
                                text="Realmente quer sair?", \
                                bitmap='question', default=1, \
                                strings=('Sim', 'Não'))
        if resposta.num == 0: self.quit()

    def setDB(self, db):
        self.db = db

def main():
    db = shelve.open("teste.db")
    frm = MainFrame()
    frm.setDB(db)
    frm.mainloop()
    print "Fechando..."
    db.close()

if __name__ == '__main__':
    main()

Scripts recomendados
   Script Linux recomendado Programa que resolve expressões matematicas
   Script Linux recomendado Cálculo de Números Perfeitos
   Script Linux recomendado Resolvendo equações
   Script Linux recomendado Distância entre dois pontos [Geometria Analítica]
   Script Linux recomendado Fatorial OO em Python

Comentários
[1] Comentário enviado por Tacioandrade em 04/07/2011 - 01:45h:

Este é um bom exemplo de um pequeno programa em Python, porem, acho que ficou faltando salvar em algum lugar os endereços, mesmo em um arquivo .txt.

[2] Comentário enviado por super64 em 04/07/2011 - 09:02h:

É possível redirecionar o fluxo de saída para um arquivo .txt, reconfigurando "sys.stdout" para que o comando "print" grave em um arquivo.

[3] Comentário enviado por Räfael em 06/07/2011 - 12:43h:

Ele salva os endereços no "teste.db". Mais também é uma opção salvar em .txt


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.