Ao iniciar o sistema SAVPy, será apresentada uma tela de autenticação para o usuário, onde o mesmo deverá informar o seu nome, senha e tipo de usuário (Figura 14).
Figura 14 - Tela de Validação do Usuário
Caso o usuário seja gerente, ele será encaminhado para a tela específica do gerente onde terá disponível todas as funcionalidades do sistema (Figura 16). Se for vendedor, surgirá outra tela semelhante onde serão restritas algumas funcionalidades, como cadastrar e consultar senhas de gerente e vendedor (Figura 15).
Figura 15 – Tela Principal do Vendedor
Na tela Principal do Gerente (Figura 16), o gerente poderá cadastrar e consultar: senhas, clientes, vendedores, financeiras e realizar vendas e trocas de veículos, podendo também fazer todas as atualizações dos dados cadastrados.
Figura 16 – Tela Principal do Gerente
Somente o gerente poderá usufruir de todas as opções do menu avançado (Figura 17).
Figura 17 – Tela Com as Opções da Aba Avançado.
Na tela Cadastrar Usuário (Figura 18), será permitido que somente o gerente faça o cadastro dos novos usuários para acessar o sistema, onde será informado o nome, senha, confirmação de senha e o status do usuário.
Figura 18 – Tela Cadastrar Usuário
Na tela que realiza a Troca do Usuário Gerente para o Usuário Vendedor (Figura 19), o gerente poderá fazer a troca imediata do seu login para qualquer um dos usuários da categoria vendedor.
Figura 19 – Realiza a Troca do Usuário Gerente para o Usuário Vendedor.
Conforme mostra a Tela de Consultar Senhas (Figura 20), o gerente terá acesso à tela de senhas cadastradas no sistema tanto dos gerentes quanto dos vendedores.
Figura 20 - Tela de Consultar Senhas
Na tela Cadastro de Cliente (Figura 21), os usuários (gerente/vendedor) serão responsáveis pelos cadastros dos clientes no sistema.
Figura 21 – Tela Cadastrar Cliente
Na tela Consultar Cliente (Figura 22), os usuários (gerente/vendedor) poderão realizar consultas de clientes fazendo pesquisas por NOME, CPF, RG e TODOS, daqueles clientes cadastrados no sistema. Podendo também fazer a atualização (Figura 23) e exclusão do cliente.
Figura 22 – Tela Consultar Cliente
Na tela referente a Atualização do Cliente (Figura 23), os usuários (gerente/vendedor) poderão fazer atualizações dos dados do cliente, onde o usuário poderá fazer todas as modificações necessárias.
Figura 23 – Tela de Atualização do Cliente
Na tela de Cadastro de Veículo, os usuários (gerente/vendedores) terão acesso a três abas contendo: a descrição do veículo, a documentação do veículo e o valor do veículo, respectivamente. A Figura 24 encontra-se a aba descrição do veículo cujos campos serão preenchidos por informações referentes às características visuais e não visuais do veículo e também suas condições atuais a fim de melhor descrevê-lo ao sistema.
Figura 24 – Tela Cadastro de Veículo na aba Descrição do Veículo
Na tela Cadastro de Veículo, na aba Documentação do Veículo (Figura 25), os usuários (gerente/vendedor) deverão preencher todos os dados sobre a documentação atual do veículo e qualquer pendência em relação a ele.
Figura 25 – Tela Cadastro do Veículo na Aba Documentação do Veículo
Na tela Cadastro de veículo na Aba Valor do Veículo (Figura 26), os usuários (gerente/vendedor) deverão preencher o valor da compra do veículo, a porcentagem de lucro que a agência deseja obter e os possíveis gastos que tiverem para colocar o veículo em condições para venda. Logo ao salvar, o valor da venda do veículo será calculado e irá automaticamente aparecer na tela de consultar veículo na aba valor do veículo (Figura 29).
Figura 26 - Tela Cadastro do Veículo na Aba Valor do Veículo.
Na tela Consulta de Veículo, os usuários (gerente/vendedor) terão disponíveis três abas de pesquisa: descrição do veículo, a documentação do veículo e o valor do veículo.
Na aba Descrição do Veículo da tela de consulta (Figura 27), pode-se realizar buscas por marca, placa, renavam ou serão apresentados todos os veículos cadastrados no sistema, sendo possível fazer a atualização dos seus dados que estarão divididos por abas.
Figura 27 - Tela Consulta de Veículo da Aba Descrição
A tela Consulta de Veículo da Aba Documentação (Figura 28) apresentará aos usuários (gerente/vendedor) o(s) resultado(s) das informações sobre a documentação do(s) veículo(s), podendo fazer também a atualização de seus dados.
Figura 28 - Tela Consulta de Veículo da Aba Documentação
Na tela Consulta de Veículo da Aba Valor (Figura 29), os usuários (gerente/vendedor) poderão visualizar o(s) resultado(s) do(s) valor(es) correspondente(s) às características do(s) veículo(s), podendo fazer a atualização de seus dados.
Figura 29 - Tela Consulta de Veículo da Aba Valor
Na tela Consultar Histórico de Veículo apresentada na (Figura 30), os usuários (gerente/vendedores) poderão realizar consultas de todos os veículos que passaram pela agência, tendo disponível a opção de pesquisa por categorias de veículo em estoque, vendidos ou trocados.
Figura 30 - Tela Consultar Histórico de Veículo
Na tela Cadastro de Vendedor (Figura 31), o gerente poderá realizar o cadastro dos vendedores da agência.
Figura 31 - Tela Cadastro de Vendedor
Na tela Consulta Vendedor da (Figura 32), o gerente poderá realizar consultas dos vendedores cadastrados no sistema.
Figura 32 - Tela Consultar Vendedor
Na tela Opção de Venda e Troca da (Figura 33), os usuários (gerente/vendedor) deverão fazer a escolha de efetuar uma venda ou uma troca de veículo, onde logo após a escolha aparecerá a tela correspondente ao escolhido.
Figura 33 - Tela da Opção de Venda e Troca.
Na tela Realiza Venda do Veículo apresentada na (Figura 34), os usuários (gerente/vendedor) poderão realizar vendas de veículo, onde deverá selecionar nessa tela o nome referente ao vendedor, o nome do cliente que vai adquirir o veículo, a placa do veículo que será vendido e a forma de pagamento.
Figura 34 - Tela Realiza Venda do Veículo
Na tela Consultar Venda apresentada na (Figura 35), os usuários (gerente/vendedor) poderão usufruir da consulta das vendas realizadas, onde poderá também fazer a atualização e exclusão dos dados.
Figura 35 - Tela Consultar Venda
Na tela Realiza Troca do Veículo apresentada na (Figura 36), os usuários (gerente/vendedor) poderão realizar uma troca de um veículo escolhido pelo cliente. O usuário do sistema deverá selecionar o nome do vendedor que realizou a troca, o nome do cliente e a placa do veículo que será trocado, preenchendo também os dados do veículo que será substituído pelo da agência.
Figura 36 - Tela Realiza Troca do Veículo
Na tela Consultar Troca do Veículo apresentada na (Figura 37), os usuários (gerente/vendedor) poderão usufruir da consulta das trocas realizadas, onde poderá também fazer a atualização e exclusão dos dados.
Figura 37 - Tela Consultar Troca Veículo
Na tela Cadastrar Financeira da (Figura 38), os usuários (gerente/vendedor) serão responsáveis pelo cadastro das financeiras que terão vínculo com a agência.
Figura 38 – Tela Cadastrar Financeira
Na tela Consultar Financeira apresentada na (Figura 39), os usuários (gerente/vendedor) poderão realizar consultas das financeiras cadastradas no sistema.
Podendo também fazer atualizações e exclusões.
Figura 39 - Tela Consultar Financeira
3.5 - Demonstração do DER (Diagrama Entidade Relacionamento) no Sistema SAVPy.
Diagrama de documentação responsável por mostrar de maneira gráfica os relacionamentos entre as entidades do banco de dados.
Figura 40 – Diagrama Entidade Relacionamento.
CONCLUSÃO
Nos dias atuais, o Desenvolvimento de Software é de grande importância para as empresas, uma vez que traz grandes benefícios e aumenta consideravelmente o desempenho e a agilidade para manter bons negócios em um mercado cada vez mais competitivo e geralmente desigual. Atualmente, a tecnologia pode ser o grande diferencial para o sucesso de uma empresa.
O SAVPy é um software que contribui para a execução das principais atividades de uma agência de veículos organizando as tarefas necessárias para a venda e troca dos mesmos veículo. A rapidez na pesquisa e a capacidade de monitoramento da frota em estoque ajudarão a aumentar a organização de uma agência que tenha este programa.
O aprendizado das potencialidades da linguagem Python também foi objetivo deste trabalho. Neste sentido, a elaboração do sistema para uso desktop foi bastante satisfatória, pois foram utilizadas as bibliotecas GTK+, PyGTK, PyCAIRO, PyGOBJECT, LibGlade e as tecnologias Eclipse, Glade, MySQL e JUDE, agregando bastante conhecimento ao grupo de desenvolvedores.
Como trabalhos futuros, poderão ser feitas alterações que ampliem as funcionalidades da aplicação, principalmente no que diz respeito a disponibilidade da mesma através da web, podendo desta forma prover novos serviços como publicação de ofertas, reservas de veículos pelo usuário, armazenamento de interesses do usuário para futuro contato, dentre outras funcionalidades on-line.
O projeto é um convite para que outros desenvolvedores interessados na área de programação que conheçam ou não o Python, possam utilizar partes do código ou o projeto inteiro como base para outros softwares. O sistema está disponibilizado sob a licença GPL no repositório GitHub ([email protected]:brunonunes/SAVPY.git) visando novas contribuições e servindo de apoio para futuros desenvolvimentos.
REFERÊNCIAS BIBLIOGRÁFICAS
ANDRADE, Douglas Soares de. Conectividade do MySQL com Python, 2002. Disponível em:
<http://www.python.org.br/wiki/DocumentacaoPython?action=AttachFile&do=get&target=m ysqlcompython.pdf>. Acesso em 03/11/2009
BEAZLEY David, Aprenda a Pensar Como um Programador com Python, 2002.
BORGES, Luiz Eduardo. Python para desenvolvedores. 1ª edição. Rio de Janeiro, 2009.
CHAVES, Thiago. IDE – Eclipse, 2007 . Disponível em:
< http://www.thiagochaves.eti.br/wordpress/?p=11>. Acesso em 30/09/2009.
CREATING a GUI using PyGTK and Glade, 2006. Disponível em:
<http://www.learningpython.com/2006/05/07/creating-a-gui-using-pygtk-and-glade/ >
Acessado em: 28/ 03/ 2009
DUQUE, Raúl González. Python para todos 2.5, 3ª edição, Espanha, 2010.
GLADE - A User Interface Designer. What is Glade?, 2009. Disponível em:
<http://glade.gnome.org/> Acessado em: 22/ 10 / 2009
JUNIOR, Fred Cox. Programando para Web Php/ Mysql - 2ª edição. 2001 LABAKI, Josué, Introdução ao Python - Módulo A. Disponível em:
<http://www.python.org.br/wiki/DocumentacaoPython?action=AttachFile&do=get&target=m aterial2.pdf>. Acesso em 06/07/2009
LIRA, Marcelo. Mantendo a Sanidade com o Glade, 2009. Disponível em:
<http://www.cin.ufpe.br/~cinlug/wiki/index.php/Mantendo_A_Sanidade_Com_O_Glade>.
Acessado em: 25/ 05/2009
MELONFIRE, Icarus. MySQL Connectivity With Python, 2002. Disponível em: <
http://www.devshed.com/c/a/Python/MySQL-Connectivity-With-Python/ >. Acesso em 03/02/2010.
RICARTE, Ivan Luiz Marques. Introdução a Orientação a Objetos, 2001. Disponível em:
Acesso em: 15/02/2009
ROSSUM, Guido van. Tutorial Python, 2005.
THE GTK+ Project. What is GTK+?, 2007. Disponível em: <http://www.gtk.org/>
Acessado em : 15/06/2009
WIKI. Guia Rápido de PyGTK, 2008. Disponível em:
<http://wiki.laptop.org/go/Guia_Rapido_de_PyGTK> . Acessado em: 20/03/2009
APÊNDICE
Segue abaixo os códigos referente a algumas classes do sistema SAVPy.
Código da Tela Principal do Gerente.
# -*- coding: utf-8 -*- '''
Created on 23/07/2009
@author: Gustavo, Bruno, Eduardo '''
#importando as bibliotecas e as classes necessárias para o funcionamento da tela
import sys try:
import gtk.glade import datetime import pygtk import gtk
from CadastrarCliente import * from ConsultarCliente import * from CadastrarVeiculo import * from ConsultarVeiculo import * from CadastrarVendedor import * from ConsultarVendedor import*
from CadastroUsuario import * from Sobre import *
from CadastrarFinanceira import * from ConsultarFinanceira import * from CadastrarVenda import * from PermissaoUsuario import * from LoggofUsuario import *
from ConsultarSenhaGerente import * from ConsultarHistoricoVeiculo import * from ConsultarVendaTroca import *
except :
print ' Erro Ao Carregar o Import da classe principal gerente' sys.exit(1)
class TelaPrincipalGerente(object):
'''
Esta é a classe que gera a Janela Principal do Gerente '''
def __init__(self):
'''
Método construtor da classe '''
# Armazena o endereço de onde foi salva a interface
self.arquivoglade="Projects\principal_gerente.glade"
#Carrega a interface a partir do arquivo Glade self.xml = gtk.glade.XML(self.arquivoglade) #Associa os widgtes as variáveis
self.principal_gerente = self.xml.get_widget('principal_gerente') self.image1=self.xml.get_widget('image1')
self.data = self.xml.get_widget('statusbar') self.labelHora = self.xml.get_widget("labelHora") # Um temporizador para manter a hora atualizada self.timer = gobject.timeout_add(1000,self.on_timer) # Muda a fonte do rotulo
self.labelHora.modify_font(pango.FontDescription('verdana 15')) #conecta os sinais aos callback
self.xml.signal_autoconnect(self)
#inseri a imagem na tela
self.image1.set_from_file('Civic.jpg')
#inserir um icone no canto direito do informando que o software
# esta em funcionamento self.statusIcon = gtk.StatusIcon()
self.statusIcon.set_from_file( "sav.jpg") self.statusIcon.set_visible(True)
# exibe todos a interface
self.principal_gerente.show_all()
# inicia o Loop principal de evento do GTK gtk.main()
#CALLBACKS
def on_timer(self):
# Pega a hora do sistema
hora = datetime.datetime.now().time().isoformat().split('.')[0]
# Muda o texto do Label
self.labelHora.set_text(hora)
# Pega a data do sistema em formato ISO
data = datetime.datetime.now().date().isoformat()
data = ' ' + '/'.join(data.split('-')[::-1])
# Coloca a data na barra de status self.data.push(0, data)
# Faz o temporiador rodar de novo
return True
def on_sair_activate (self,widget):
# fecha a tela principal gerente self.principal_gerente.hide()
#limpa o ícone savpy no canto direito do pc self.statusIcon = ''
# sai do loop principal de evento, finalizando o programa gtk.main_quit()
def on_cadastrar_cliente_activate(self,widget):
cadasc=CadastrarCliente()
def on_consultar_cliente_activate(self,widget):
consulc=ConsultarCliente()
def on_cadastrar_veiculo_activate(self,widget):
cadasv=CadastrarVeiculo()
def on_consultar_veiculo_activate(self,widget):
consulv=ConsultarVeiculo()
def on_cadastrar_usuario_activate(self,widget):
cu=CadastroUsuario()
def on_permissao_usuario_activate(self,widget):
msg = gtk.MessageDialog(None, 0, gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO, 'Deseja Fazer a Troca de Usuario ?')
msg.set_position(gtk.WIN_POS_CENTER) resposta = msg.run()
if resposta == gtk.RESPONSE_YES:
self.principal_gerente.destroy() msg.destroy()
def on_trocar_usuario_activate(self,widget):
msg = gtk.MessageDialog(None, 0, gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO, 'Deseja Fazer a Troca de Usuario ?')
msg.set_position(gtk.WIN_POS_CENTER) resposta = msg.run()
if resposta == gtk.RESPONSE_YES:
self.principal_gerente.destroy() msg.destroy()
t=LoggofUsuario() msg.destroy()
def on_cadastrar_vendedor_activate(self,widget):
cadasvend=CadastrarVendedor()
def on_consultar_vendedor_activate(self,widget):
consulvend=ConsultarVendedor()
def on_sobre_activate(self,widget):
s=Sobre()
def on_cadastrar_financeira_activate(self,widget):
cf=CadastrarFinanceira()
def on_consultar_financeira_activate(self,widget):
cof=ConsultarFinanceira()
def on_cadastrar_venda_activate(self,widget):
cvr=CadastrarVenda()
def on_consultar_senha_gerente_activate(self,widget):
csg=ConsultarSenhaGerente()
def on_consultar_historico_veiculo_activate(self,widget):
csg=ConsultarHistoricoVeiculo()
def on_consultar_venda_activate(self,widget):
cvt=ConsultarVendaTroca()
def on_principal_gerente_destroy(self,*args):
self.statusIcon = '' gtk.main_quit()
# Inicia a Aplicação if __name__ == '__main__':
t= TelaPrincipalGerente()
Código da Tela Cadastrar Cliente.
# -*- coding: utf-8 -*- '''
Created on 10/08/2009
@author: Luís Gustavo, Bruno, Eduardo '''
#importando as bibliotecas e as classes necessárias para o devido funcionamento
import sys try:
import datetime import pygtk
pygtk.require('2.0') import gtk
import gtk.glade import MySQLdb import os.path except:
print ' Erro Ao Carregar o Import da Classe Cadastrar Cliente' sys.exit(1)
class CadastrarCliente(object):
def __init__(self):
"""
Método Construtor da classe """
# setando as variaveis para acessar o banco de dados self.host= "localhost"
self.user= "root"
self.passwd= "carros"
self.database ="agencia"
#Armazena o endereço de onde foi salva a interface self.arquivoglade = "Projects\cadastro_cliente.glade"
#Carrega a interface a partir do arquivo glade self.xml = gtk.glade.XML(self.arquivoglade) ##Associa os widgets as variaveis
self.cadastro_cliente=self.xml.get_widget('cadastro_cliente') self.entryCodigo=self.xml.get_widget('entryCodigo')
self.entryNome=self.xml.get_widget('entryNome')
self.comboEstadoCivil=self.xml.get_widget('comboEstadoCivil') self.entryEndereco=self.xml.get_widget('entryEndereco')
self.entryNumero=self.xml.get_widget('entryNumero') self.entryBairro=self.xml.get_widget('entryBairro') self.entryCidade=self.xml.get_widget('entryCidade') self.entryCep=self.xml.get_widget('entryCep')
self.comboUf=self.xml.get_widget('comboUf')
self.entryEmail=self.xml.get_widget('entryEmail') self.entryCpf=self.xml.get_widget('entryCpf') self.entryRg=self.xml.get_widget('entryRg')
self.entryDataNascimento=self.xml.get_widget('entryDataNascimento') self.entryResidencial=self.xml.get_widget('entryResidencial')
self.entryComercial=self.xml.get_widget('entryComercial')
self.entryCelular=self.xml.get_widget('entryCelular') self.entryRamalComercial=self.xml.get_widget('entryRamalComercial') self.entryDddResidencial=self.xml.get_widget('entryDddResidencial') self.entryDddComercial=self.xml.get_widget('entryDddComercial') self.entryDddCelular=self.xml.get_widget('entryDddCelular') self.entryBanco=self.xml.get_widget('entryBanco')
self.entryAgencia=self.xml.get_widget('entryAgencia') self.entryTipoConta=self.xml.get_widget('entryTipoConta') self.entryNumeroConta=self.xml.get_widget('entryNumeroConta') self.buttonSalvar= self.xml.get_widget('buttonSalvar')
self.buttonFechar=self.xml.get_widget('buttonFechar') #mantem o foco do combobox no primeiro item
self.comboEstadoCivil.set_active(0) self.comboUf.set_active(0)
#conectando os sinais aos callback self.xml.signal_autoconnect(self)
#exibe todo interface gráfica self.cadastro_cliente.show_all()
#inicia o loop principal gtk.main()
#Callback
def on_buttonSalvar_clicked (self,widget):
#verifica se a caixa de texto esta vazia se sim aparece uma mensagem dizendo para preencher
if (self.entryNome.props.text == "" or
self.entryEndereco.props.text == "" or self.entryNumero.props.text=="" or self.entryBairro.props.text == "" or self.entryCidade.props.text == "" or self.entryCep.props.text == "" or self.entryCpf.props.text == "" or
self.entryRg.props.text == "" or self.entryDataNascimento.props.text == ""
or self.entryDddResidencial.props.text=="" or self.entryResidencial.props.text=="" ):
#caixa de dialogo
msg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, 'Por favor preencha os campos Marcado com *') resposta=msg.run()
msg.destroy()
else:
#pegando o que foi digitado ou selecionado e armazena nas variáveis
nome = self.entryNome.props.text
estadocivil=self.comboEstadoCivil.get_active_text() endereco= self.entryEndereco.props.text
numero= self.entryNumero.props.text bairro= self.entryBairro.props.text cidade= self.entryCidade.props.text cep= self.entryCep.props.text
uf=self.comboUf.get_active_text() email=self.entryEmail.props.text cpf= self.entryCpf.props.text rg=self.entryRg.props.text
nascimento= self.entryDataNascimento.props.text dddresidencial=self.entryDddResidencial.props.text dddcomercial=self.entryDddComercial.props.text dddcelular=self.entryDddCelular.props.text residencial=self.entryResidencial.props.text comercial=self.entryComercial.props.text celular=self.entryCelular.props.text
ramalresidencial=self.entryRamalResidencial.props.text ramalcomercial=self.entryRamalComercial.props.text banco=self.entryBanco.props.text
agencia=self.entryAgencia.props.text
numeroconta=self.entryNumeroConta.props.text tipoconta=self.entryTipoConta.props.text
data1 = datetime.datetime.now().date().isoformat() data= '/'.join(data1.split('-')[::-1])
#" Limpando os campos "
self.entryNome.props.text = ""
self.comboEstadoCivil.set_active(0) self.entryEndereco.props.text = ""
self.entryNumero.props.text = ""
self.entryBairro.props.text = ""
self.entryCidade.props.text = ""
self.entryCep.props.text = ""
self.comboUf.set_active(0) self.entryEmail.props.text = ""
self.entryCpf.props.text = ""
self.entryRg.props.text = ""
self.entryDataNascimento.props.text = ""
self.entryDddResidencial.props.text = ""
self.entryDddComercial.props.text = ""
self.entryDddCelular.props.text = ""
self.entryResidencial.props.text = ""
self.entryComercial.props.text = ""
self.entryCelular.props.text = ""
self.entryRamalResidencial.props.text = ""
self.entryRamalComercial.props.text = ""
self.entryBanco.props.text = ""
self.entryAgencia.props.text = ""
self.entryNumeroConta.props.text = ""
self.entryTipoConta.props.text = ""
#gravando dados no Banco
sql = "insert into cliente(nome,estadocivil, endereco, numero, bairro, cidade, cep,uf, email, cpf, rg, nascimento, dddresidencial,
residencial, ramalresidencial, dddcomercial, comercial, ramalcomercial, dddcelular, celular, banco, agencia,numeroconta, tipoconta,data) values('"
+ nome.upper() + "','" + estadocivil.upper() + "', '" + endereco.upper() +
"', '" + numero + "','" + bairro.upper() + "', '" + cidade.upper() + "', '" + cep + "','" + uf + "','" + email + "', '" + cpf + "', '" + rg + "','"
+ nascimento + "', '" + dddresidencial + "','" + residencial + "','" + ramalresidencial + "', '" + dddcomercial+ "','" + comercial + "','" + ramalcomercial + "','" + dddcelular + "','" + celular + "','" +
banco.upper() + "','" + agencia + "','" + numeroconta + "','" + tipoconta.upper() + "','" + data + "' )"
#fazendo a conexão com o Banco
self.conexao=MySQLdb.connect(self.host,self.user,self.passwd,se lf.database)
self.cursor = self.conexao.cursor()# Criando um Cursor self.cursor.execute(sql) # Executa o SQL
self.conexao.commit()# envia tudo para o Banco
msg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, 'Cadastrado Com Sucesso')
msg.run() msg.destroy()
def on_buttonFechar_clicked (self,widget):
#fecha a janela cadastro de cliente ao clicar no botão fechar self.cadastro_cliente.hide()
#Sai do loop principal de eventos, finalizando o programa gtk.main_quit()
def on_cadastro_cliente_destroy(self,*args):
#Sai do loop principal de eventos, finalizando o programa gtk.main_quit()
# Inicia a Aplicação if __name__ == '__main__':
cc = CadastrarCliente()
Código da Tela Consultar Cliente.
# -*- coding: utf-8 -*- '''
Created on 23/07/2009
@author: Gustavo, Bruno, Eduardo '''
#importando as bibliotecas, o módulo e a classe necessária para o funcionamento
import sys try:
import pygtk
pygtk.require('2.0') import gtk
import gtk.glade import MySQLdb import datetime
from CadastrarCliente import * except:
print ' Erro Ao Carregar o Import da Classe Consultar Cliente' sys.exit(1)
class ConsultarCliente(object):
def __init__(self):
self.host= "localhost"
self.user= "root"
self.passwd= "carros"