Desenvolvendo aplicações GUI simples em Python & Glade (PyGTK) com banco de dados SQLite

O objetivo deste artigo é mostrar de forma objetiva como realizar procedimentos básicos de programação, então vamos abordar a criação da parte gráfica do programa, vamos falar de como usar controles e eventos simples na nossa aplicação, como botões, caixas de textos, janelas, diálogos, listas, o básico necessário da linguagem Python e como fazer as principais operações com banco de dados.

[ Hits: 169.453 ]

Por: Perfil removido em 28/07/2010


Dando forma à aplicação



Banco de dados

Primeiro vamos criar o nosso banco de dados de exemplo. Bem, eu não vou explicar como usar o Sqliman, ele é uma ferramenta de manipulação de banco de dados bem simples e intuitiva, e se você está lendo este artigo, creio que tenha conhecimento suficiente para fazê-lo, seria redundância. Nesse nosso exemplo eu vou usar parte de um aplicativo que estou fazendo pra controlar minhas despesas pessoais, do meu jeito.

O objetivo deste artigo é mostrar de forma objetiva como realizar procedimentos básicos de programação, então vamos abordar a criação da parte gráfica do programa, vamos falar de como usar controles e eventos simples na nossa aplicação, como botões, caixas de textos, janelas, diálogos, listas, o básico necessário da linguagem Python e como fazer as principais operações com banco de dados como SELECT, INSERT, UPDATE e DELETE. Vou usar a tabela de usuários da minha aplicação como base do exemplo, vamos cadastrar, verificar login, listar, alterar dados e excluir. Enfim, nossa tabela no banco será criada assim:

CREATE TABLE "usuarios" (
    "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    "user" VARCHAR(20) NOT NULL,
    "nome" VARCHAR(50) NOT NULL,
    "senha" VARCHAR(8) NOT NULL
);

Você pode criar, salvar e executar seus arquivos onde quiser, tando os ".glade" da parte gráfica, quanto o nosso ".sqlite" do banco e os ".py" do programa - pra encurtar caminho, pro meu projeto eu criei uma pasta /opt/gfpopen/ e estou trabalhando nela.

Telas

Criar a parte gráfica do programa usando o Glade é a melhor opção na minha opinião. Você pode criar suas telas "no braço", programando linha por linha pra criar, posicionar, organizar e formatar os controles, mas isso dá muito mais trabalho do que "arrastar e soltar". então vamos criar no nosso exemplo as telas no Glade que ele vai salvar com a extensão ".glade" (que na verdade é um arquivo XML) e então nós "lemos" este arquivo com alguns poucos comandos usando as funções das bibliotecas do Python e ele monta as telas pra nós.

Bem, eu também não vou me aprofundar no Glade, já fiz isso de certa forma em artigos anteriores, conforme você pode conferir nos links que coloquei na introdução deste artigo. Os arquivos das telas são pequenos em questão de bytes, mas como são arquivos XML o texto do código-fonte deles é um pouco extenso, fica maio inviável colocar linha por linha aqui, então eu estou disponibilizando os arquivos e as imagens que eu usei pra criação da parte gráfica deste exemplo num diretório no meu site, pode acessar lá e ver sem medo:
Nós podemos criar um arquivo ".glade" pra cada tela da nossa aplicação, mas eu preferi agrupar por módulos - neste exemplo no arquivo gfp.glade eu "desenhei" a tela principal, o diálogo de login e coloquei a janela com o sobre; no arquivo usuarioslista.glade está a tela de listagem e a de cadastro dos usuários. Basta você baixar os arquivos e abrir no Glade que visualmente vai ficar bem fácil entender, bem parecido com o que fazemos com HTML.
Linux: Desenvolvendo aplicações GUI simples em Python & Glade (PyGTK) com banco de dados SQLite
Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Por que Python?
   3. Preparando o ambiente
   4. Dando forma à aplicação
   5. Agora vamos programar
   6. Continuando a programar
   7. Finalizando com a listagem
Outros artigos deste autor

Como otimizar o desempenho do vídeo Intel com o driver i915

Passos essenciais para configurar sua impressora no Linux

Configurando firewall básico para compartilhar internet

Atualizando o kernel do Slackware de forma segura, sem o famoso "kernel panic"

Funtoo Linux - Pré-instalação

Leitura recomendada

Introdução a Threads e como implementá-las em Python

Arduino com Bluetooth e pySerial

Reconhecimento de placas de veículos com OpenALPR

Gerar senhas seguras com Python

Python - Uma linguagem orientada a objetos

  
Comentários
[1] Comentário enviado por fonini em 29/07/2010 - 08:27h

Parabéns pelo excelente artigo!

[2] Comentário enviado por balani em 29/07/2010 - 09:40h

Excelente artigo, estou iniciando em Python, seu artigo me ajudará muito, nesse aprendizado.

Parabens!

Abraços


Adriano R. Balani

[3] Comentário enviado por gtuxed em 29/07/2010 - 12:34h

Bom artigo, parabéns.

Estes dias fiz meu primeiro aplicativo com PyGTK e apesar de também ser iniciante em python, não achei muito difícil exceto por ainda achar as estruturas liststore/treestore um pouco "overkill" rsrs.

Falando mais sobre estas estruturas, acho que apesar da flexibilidade que elas oferecem, deveria haver uma interface mais simples para coisas mais pragmáticas.

Mas isso é mais um problema com GTK do que com PyGTK (que é apenas um binding).

hehe, olha só como é complexo criar uma simples lista e apresentar...

##

# Criamos um modelo ListStore(<tipo>,<tipo>,...)
liststore = gtk.ListStore(str)

# Baseado no modelo criamos uma treeview
treeview = gtk.TreeView(liststore)

# Precisamos criar um "renderizador" (será que estou usando blender, engine 3d, etc.? rsrs)
textrenderer = gtk.CellRendererText()

# Adicionamos a coluna ao treeview
column = gtk.TreeViewColumn('Nome da coluna', textrenderer, text=0)
treeview.append_column(column)

# Adicionamos valores à lista
for row in ['a','b','c']:
itt = liststore.append([row])

##

Poderia ser assim:

##

# Criamos a lista
list = gtk.List(str)

# Adicionamos valores à ela
list.append('teste')

##

Da pra fazer isso facilmente, mas acho que isso já deveria existir rsrs

[4] Comentário enviado por gomes-fdr em 29/07/2010 - 16:26h

Muito bom o seu artigo, parabens.

Para mim servirá como material de apoio para o inicio de aplicativos baseados em Python(desktop).

Saudações.

[5] Comentário enviado por albfneto em 01/08/2010 - 18:48h

émuitobom esse artigo.! 10

[6] Comentário enviado por Lisandro em 21/12/2010 - 09:05h

Parabéns pelo artigo. Muito Bom.

[7] Comentário enviado por quemsoueu em 06/07/2012 - 08:18h

Cara seu artigo abriu meus olhos eu tava quase desistindo de desenvolver o software.
A dúvida é com o tkinter eu consigo rodar ele no windows como java, entretanto como faço para rodar ele no windows ele foi escrito com o pygtk e glade, e preciso rodar numa estação Win, acaso você já fez isso?

[8] Comentário enviado por leo523 em 10/06/2013 - 10:17h

Ótimo post, mas atualmente o modo é um pouco diferente, ao inves de usar a biblioteca glade.XML para chamar o xml, usa-se o gtk.builder.

Respondendo o comentário acima, para distribuir no Windows vc deve instalar o pygtk completo que esta neste link :
http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.24/

[9] Comentário enviado por wladimir58 em 15/06/2016 - 16:27h

Nunca consegui usar as interfaces do Glade nos meus programas em Python




Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts