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


