= 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("",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