GuiDB

Python com Interface Gráfica e Banco de Dados

Neste pequeno artigo veremos como fazer uma aplicação gráfica em python com acesso a banco de dados. Para fazer nossa interface gráfica iremos usar o Tkinter, um dos toolkits gráficos que podem usados com o Python.

O SQLObject é um gerenciador Objeto-Relacional que nos fornece uma interface de acesso ao banco de dados orientada a objetos. Neste pequeno exemplo usamos o SQLite como banco de dados, porém o SQLObject suporta outros bancos como MySQL e PostgreSQL.

Nossa aplicação será um cadastro de clientes, como não queremos gastar tempo com coisas óbvias esse cadastro terá apenas os campos Nome e Email.

Primeiro faremos a classe de acesso ao banco:

clientes_db.py

import os, sys

try
    from sqlobject import *
except:
    print "Erro ao carregar o modulo SQLObject"
    sys.exit(1)

session_db = 'sqlite://' + os.path.dirname(__file__) +'/dados.db'
class Cliente(SQLObject):
    _connection = connectionForURI(session_db)
    Nome = StringCol (length=50)
    Email = StringCol (length=100)

Pronto, agora faremos a aplicação propriamente dita:

clientes.py

from Tkinter import *
from clientes_db import *
import tkMessageBox

class Application:

    root = None

    def __init__(self):

        # Cria o form e seta o titulo
        self.root = Tk()
        self.root.title("Cadastro de Cliente em Python")

        # Cria o label e a caixa de texto para o Nome
        lblNome = self.getLblNome()
        self.txtNome = self.getTxtNome()

        # Cria o label e caixa de texto para o email
        lblEmail = self.getLblEmail()
        self.txtEmail = self.getTxtEmail()

        # Cria o botao
        btnGravar = self.getBtnGravar()

        # Insere os controles no form
        lblNome.pack()
        self.txtNome.pack()
        lblEmail.pack()
        self.txtEmail.pack()
        btnGravar.pack()

        # Associa o btnGravar a uma rotina
        btnGravar.bind("<Button-1>",self.gravarCliente)

        # Seta as dimensoes do form
        self.root.geometry("250x120+0+0")

    """ Rotinas que retornam os controles para o form """

    def getLblNome(self):
        return Label(self.root,text="Nome")

    def getTxtNome(self):
        return Entry(self.root)

    def getLblEmail(self):
        return Label(self.root,text="Email")

    def getTxtEmail(self):
        return Entry(self.root)

    def getBtnGravar(self):
        return Button(self.root,text="Gravar")

    def getMainForm(self):
        return self.root

    """ Rotina para gravar o cadastro do cliente """
    def gravarCliente(self,event):
        Cliente(Nome = self.txtNome.get(), 
                Email = self.txtEmail.get())
        tkMessageBox.showwarning("Cadastro de Clientes",
                                 "Cadastro gravado com sucesso!")
        sys.exit(0)

app = Application()
app.getMainForm().mainloop()

Bom agora vamos fazer um programa de instalação para nossa aplicação, ele será o responsável por criar a nossa base de dados como definimos na classe Cliente.

install.py

from clientes_db import *
print "Esse software depende do SQLObject instalado em sua maquina"
instalar = raw_input ("Voce esta pronto para instalar o sistema agora? (sim/nao) :")
if instalar == "sim":

    print "Criando o banco de dados..."
    Cliente.createTable()
    print "Ok\n"
    print "seu sistema jah pode ser usado"

Pronto com isso seu sistema está pronto para ser instalado e usado.

Volta para CookBook.


Nabucodonosor Coutinho

GuiDB (editada pela última vez em 2008-09-26 14:06:08 por localhost)