4 - Interface Gráfica Com Python
4 - Interface Gráfica Com Python
Descrição
Propósito
Compreender como criar uma aplicação GUI em python que interaja com um
banco de dados, de modo a realizar as operações de inserção, consulta,
alteração e exclusão de dados em uma tabela.
Preparação
Antes de iniciar este conteúdo, você precisar ter instalado uma versão do
python, a IDE Spyder e o PostgreSQL.
Objetivos
Módulo 1
Módulo 3
Módulo 4
Além disso, para que o usuário possa interagir de modo eficiente com o
sistema, é importante que ele tenha à disposição uma interface gráfica que
facilite o seu acesso às funcionalidades implementadas.
A linguagem python aparece como uma opção muito eficaz para atingir
esses objetivos, uma vez que oferece recursos para desenvolver aplicações
que integrem interface gráfica com operações no banco de dados.
Ao longo deste conteúdo, apresentaremos alguns dos principais frameworks
e as bibliotecas para desenvolver aplicações de interface gráfica, além de
explorarmos como realizar aplicações no banco de dados.
Conceitos
A linguagem python possui muitos frameworks para desenvolvimento de
aplicações de interface gráfica para interação com o usuário, chamadas,
comumente, de GUI (Graphical User Interface).
Tkinter
É o framework GUI padrão do python. Sua sintaxe é simples, possui muitos
componentes para interação com o usuário. Além disso, seu código é aberto
e é disponível sob a licença python. Caso ela não esteja instalada na sua
versão do python, basta digitar o comando:
Terminal
content_copy
Para quem usa a IDE Spyder (SPYDER, 2020), é necessário colocar uma
exclamação antes do comando “pip”, ou seja:
Terminal
content_copy
Python
content_copy
Se a instalação ocorreu normalmente, aparecerá uma tela com alguns
componentes para que você possa interagir e ter uma impressão inicial do
potencial desse framework:
Atenção!
Flexx
É um kit de ferramentas para o desenvolvimento de interfaces gráficas com
o usuário implementado em python que faz uso de tecnologia web para sua
renderização. O Flexx pode ser usado para criar tanto aplicações de desktop
como para web e até mesmo exportar uma aplicação para um documento
HTML independente. Para instalar o Flexx, basta digitar o comando:
Terminal
content_copy
Para quem usa a IDE Spyder, é necessário colocar uma exclamação antes do
comando “pip”, isso vale para qualquer instalação de
biblioteca/framework/pacote.
Comentário
Para evitar repetições sobre isso, apresentaremos aqui como instalar o
pacote Flexx na IDE Spyder, mas, para os próximos casos, mostraremos
apenas a instalação tradicional, ou seja, sem o símbolo de “exclamação”.
Terminal
content_copy
Uma forma prática de testar a instalação e aprender um pouco mais sobre
esse framework é escrever o código abaixo na linha de comando, ou em um
arquivo, e executar:
Python
content_copy
Terminal
content_copy
Python
content_copy
Atenção!
Kivy
É um framework python de código aberto para o desenvolvimento de
aplicações com interfaces de usuário e multitoque. Ele é escrito em python e
Cython, baseado em OpenGL ES 2, suporta vários dispositivos de entrada e
possui uma extensa biblioteca de componentes (widgets).
Terminal
content_copy
Python
content_copy
Se tudo funcionar corretamente, aparecerá a aplicação, conforme a próxima
imagem.
Pyforms
É um framework python 3 para desenvolver aplicações que podem operar
nos ambientes Desktop GUI, Terminal e Web. A biblioteca é composta por
três sub-bibliotecas, cada uma implementando a camada responsável por
interpretar a aplicação Pyforms em cada ambiente diferente:
1. Pyforms-gui.
2. Pyforms-web.
3. Pyforms-terminal.
Python
content_copy
Python
content_copy
Comentário
PyQt
Uma aplicação desenvolvida no framework PyQt e executada nas
plataformas Windows, macOS, Linux, iOS e Android.
Python
content_copy
Se tudo funcionar corretamente, aparecerá a aplicação conforme a imagem
a seguir.
wxPython
É um kit de ferramentas GUI baseadas em uma biblioteca C++ chamada
wxWidgets que foi lançada em 1998. O wxpython usa os componentes
(widgets) reais na plataforma nativa sempre que possível. Essa, inclusive, é
a principal diferença entre o wxpython e outros kits de ferramentas, como
PyQt ou Tkinter.
Atenção!
As aplicações desenvolvidas em wxpython se assemelham a aplicações
nativas do sistema operacional em que estão sendo executadas.
Terminal
content_copy
Python
content_copy
Se tudo funcionar corretamente, aparecerá a aplicação, conforme a imagem
seguinte.
Exemplo de aplicação wxpython.
PyAutoGUI
Permite desenvolver aplicações python que controlem o mouse e o teclado
para automatizar as interações com outros aplicativos.
Comentário
Uma das situações em que essa característica pode ser muito interessante
é na implementação de testes que simulem a interação do usuário com o
sistema.
Terminal
content_copy
Uma forma de testar a instalação é escrever e executar o programa:
Python
content_copy
Atenção!
PySimpleGUI
Esse pacote foi lançado em 2018 e possui portabilidade com os pacotes:
Tkinter, PyQt, wxpython e Remi, portanto aumenta as possibilidades de uso
de componentes na programação.
Terminal
content_copy
Uma forma de testar a instalação é escrever e executar o programa:
Python
content_copy
Exemplo PySimpleGUI.
Atenção!
A lista de frameworks e bibliotecas disponíveis para python ainda tem
muitos outros exemplos, como o PySide e o PyObject. A escolha deve levar
em consideração a maturidade da biblioteca/framework e a necessidade de
o projeto incorporar ou não aspectos mais elaborados de uma GUI.
Interface GUI
Vantagens
Entre as principais vantagens relacionadas às escolhas por uma
biblioteca/framework para um projeto da interface GUI, estão:
Desvantagens
Também devem ser levadas em consideração as desvantagens relacionadas
às escolhas de bibliotecas/frameworks da interface GUI:
video_library
Como criar uma aplicação com
interface gráfica
Aprenda a criar uma aplicação com interface gráfica. Veja a apresentação
do protótipo de sistema que será desenvolvido, os frameworks a serem
utilizados e a preparação do ambiente para utilização.
Questão 1
A linguagem Python é muito usada em diversas aplicações devido à
simplicidade da sintaxe e por possuir muitos pacotes disponíveis que
podem ser instalados por meio do comando “pip install ”. Sobre o
comando “pip”, selecione a opção correta:
Questão 2
Biblioteca Tkinter
Conceitos
Neste módulo, o nosso foco será na criação de uma aplicação GUI. Para
isso, a biblioteca que vamos usar como referência é a Tkinter.
Comentário
Essa biblioteca GUI é considerada a padrão para desenvolvimento de
interface gráfica no python. Ela fornece uma interface orientada a objetos
que facilita a implementação de programas interativos.
Python
content_copy
1. Window
2. Label
3. Button
4. Entry
5. Radiobutton
6. Checkbox
7. Text
8. Message
9. Sliders
10. Dialog
11. Combobox
Python
content_copy
Agora, cada uma das linhas será analisada.
Python
content_copy
Atenção!
A principal diferença desse exemplo em relação ao anterior está na linha 4,
onde a propriedade de redimensionar a janela é colocada como “Falso”.
Widget Label
O próximo exemplo apresenta como usar o widget “Label”. O código para
gerar uma aplicação com o “Label” é dado por:
Python
content_copy
Na próxima imagem, é exibido o resultado da execução:
Widget Button
O próximo exemplo apresenta como usar o widget “Button”.
O código para gerar uma aplicação com o componente “Button” é dado por:
Python
content_copy
Este programa vai gerar uma janela com um contador de segundos – que
utiliza um componente “label” – e um componente botão com a mensagem
“Clique aqui para interromper a contagem”.
Widget Entry
Agora, vamos analisar o componente “entry”. Ele é uma das principais
formas de o usuário entrar com dados no sistema.
Python
content_copy
O código produzirá uma janela com duas entradas de dados (widgets entry),
dois botões e dois componentes rótulos, conforme podemos ver na imagem
a seguir.
Widget Radiobutton
O próximo exemplo apresenta como usar o widget “Radiobutton”. O código
para gerar uma aplicação com esse componente é dado por:
Python
content_copy
Widget Checkbox
O próximo exemplo apresenta como usar o widget “checkbox”. O código
para gerar uma aplicação com esse componente é dado por:
Python
content_copy
O código produzirá uma janela com um “label”, dois “checkboxes” e dois
botões, conforme a Figura 16.
Exemplo do componente checkbox.
Widget Text
O próximo exemplo apresenta como usar o widget “Text”. O código para
gerar uma aplicação com o componente “Text” é dado por:
Python
content_copy
O código produzirá uma janela com um texto, conforme a imagem a seguir.
Widget Message
O próximo exemplo apresenta como usar o widget “Message”. O código para
gerar uma aplicação com o componente “Message” é dado por:
Python
content_copy
O código produzirá uma janela com uma mensagem, conforme pode ser
visto na imagem seguinte.
Widget Slider
O próximo exemplo apresenta como usar o widget “Slider”. O código para
gerar uma aplicação com esse componente é dado por:
Python
content_copy
Além disso, são determinadas as propriedades “from”, “to” e “orient”, que são
responsáveis, respectivamente, pelo espectro de escala componente e pela
orientação do componente na tela.
Widget Dialog
O próximo exemplo apresenta como usar o widget “Dialog”. O código para
gerar uma aplicação com o componente “Dialog” é dado por:
Python
content_copy
Sair
Caso o usuário tenha pressionado o botão “Sair”, aparecerá uma janela
com a mensagem “Realmente quer sair?”, conforme mostrado na
figura.
Resposta
Widget Combobox
O próximo exemplo apresenta como usar o widget “Combobox”. O código
para gerar uma aplicação com esse componente é dado por:
Python
content_copy
video_library
Projetando a interface gráfica
Agora, daremos continuidade e projetaremos a interface gráfica. Veja como
são carregados os widgets necessários para o funcionamento do protótipo.
Falta pouco para atingir seus objetivos.
Questão 1
Python
content_copy
Questão 2
O Tkinter possui diversos componentes (widgets) que são úteis para
criar aplicações que vão facilitar a interação do usuário com o sistema.
Nesse sentido, selecione a opção que relaciona corretamente o
componente e sua respectiva funcionalidade.
Conceitos
O python possui muitas bibliotecas para interagir com diversos bancos de
dados. Aqui, o foco será a integração com o PostgreSQL. Isso porque pode
ser usado gratuitamente, possui bastante documentação disponível on-line
e pode ser aplicado para resolver problemas reais.
RUD
Acrônimo da expressão do idioma Inglês, Create (Criação), Read (Consulta),
Update (Atualização) e Delete (Destruição).
Dica
Inicialmente, é necessário ter o PostgreSQL instalado. Os exemplos
apresentados aqui foram implementados na versão 4.24 do PostgreSQL.
Sql
content_copy
Sql
content_copy
Em seguida, fazemos uma consulta na tabela:
Sql
content_copy
Agora, vamos estudar o pacote que será utilizado para que o python possa
interagir com o PostgreSQL: psycopg2.
Atenção!
O PostgreSQL pode ser integrado ao python usando o módulo psycopg2.
Trata-se de um adaptador de banco de dados PostgreSQL. O pacote
psycopg2 é simples, rápido e estável.
Terminal
content_copy
connection.cursor ()
Sql
content_copy
Sql
content_copy
O trecho de código começa com uma lista de três carros, na qual cada carro
possui um código de identificação, um nome e um preço.
Logo depois, é criado o cursor que será usado para realizar as operações
sobre o banco de dados.
Por fim, é executada a rotina “executemany”, sendo que ela recebe uma
query e uma lista de carros que serão inseridos no banco de dados.
cursor.callproc
('NomeDaFunção_Ou_NomeDoProcedimentoArmazenado', [parâmetros
IN e OUT,])
Esta rotina faz chamada para uma função ou um procedimento
armazenado do banco de dados. Os parâmetros IN e OUT correspondem,
respectivamente, aos parâmetros de entrada e saída da função ou do
procedimento armazenado e devem ser separados por vírgulas.
cursor.rowcount
Este atributo retorna o número total de linhas do banco de dados que
foram modificadas, inseridas ou excluídas pela última instrução de
“execute“.
connection.commit()
Este método confirma a transação atual. É necessário que ele seja
chamado ao final de uma sequência de operações sql, pois, caso
contrário, tudo o que foi feito desde a última chamada até o “commit”
não será visível em outras conexões de banco de dados.
connection.rollback()
Este método reverte quaisquer mudanças no banco de dados desde a
última chamada até o “commit”.
connection.close()
Este método fecha a conexão com o banco de dados. Ele não chama o
“commit” automaticamente. Se a conexão com o banco de dados for
fechada sem chamar o “commit” primeiro, as alterações serão perdidas.
cursor.fetchone()
Este método busca a próxima linha de um conjunto de resultados de
consulta, retornando uma única sequência, ou nenhuma, quando não há
mais dados disponíveis.
cursor.fetchmany([size = cursor.arraysize])
Esta rotina busca o próximo conjunto de linhas de um resultado de
consulta, retornando uma lista. Uma lista vazia é retornada quando não
há mais linhas disponíveis. O método tenta buscar quantas linhas forem
indicadas pelo parâmetro “size”.
Um exemplo completo
Agora, apresentaremos um exemplo completo de como usar o psycopg2
que abordará:
table_rows
Criação de uma tabela
post_add
Inserção de dados
highlight_alt
Seleção de dados
refresh
Atualização de dados
delete_sweep
Exclusão de dados
Criação de tabela
Este primeiro código mostra como criar uma tabela a partir do python. É
uma alternativa em relação a criar a tabela usando o PostgreSQL.
Sql
content_copy
Depois de colocar o programa para executar, se tudo funcionar
corretamente, aparecerão as mensagens na tela:
Conexão com o Banco de Dados feita com Sucesso! Tabela criada com
sucesso!
Sql
content_copy
As mensagens que vão aparecer depois da execução do programa são:
Conexão com o Banco de Dados feita com Sucesso! Inserção realizada com
sucesso!
ostgres
Perceba que esse nome não é do sistema gerenciador de banco de dados, e
sim um nome que escolhemos. Poderia ser, por exemplo, “banco_dados_teste”.
E no final do código:
Python
content_copy
Linha 5 - É feita a consulta na tabela “Agenda” pelo registro com “id” igual
a 1, por meio do comando Select do SQL.
Python
content_copy
Este código possui três partes distintas, que são:
Parte 1
Uma consulta antes da atualização que mostra os dados do registro antes
de serem modificados.
Parte 2
A atualização do registro que vai modificar os dados.
Parte 3
Uma consulta depois da atualização do registro que mostra como ficaram
os dados do registro depois de serem atualizados.
Atenção!
A linha 10 é a mais importante deste código. É nela que é executado o
comando “update” do sql, que atualizará o dado do campo “telefone” do
registro, cujo campo “id” contenha o valor “1”.
Python
content_copy
Depois de colocar o programa para executar, se tudo funcionar
corretamente, aparecerão as mensagens na tela:
Linha 5 - É feita a consulta na tabela “Agenda” pelo registro com “id” igual
a 1, por meio do comando Select do SQL.É executado o comando “delete”
do sql que excluirá o registro cujo campo “id” seja igual a “1”.
video_library
Protótipo do sistema
Dando continuidade ao desenvolvimento do protótipo do sistema, veja a
modelagem do banco de dados a ser utilizado, criando o banco e fazendo as
inserções/atualizações/remoções necessárias.
Python
content_copy
Questão 2
Visão geral
Conceitos
Até o dado momento, vimos como criar uma aplicação com componentes
de interface gráfica e como interagir com um banco de dados.
Comentário
No caso do nosso sistema, vamos criar a tabela Produto, que tem três
campos: “CODIGO”, “NOME” e “PRECO”.
Outra forma de criar uma tabela é mediante o próprio python, com o uso da
biblioteca “psycopg2”.
Seleção de dados.
Inserção de dados.
Exclusão de dados.
Linha 116 - Implementamos a função “excluirDados” e passamos o
“codigo” do produto que será excluído da tabela.
Linha 121 e 122 - Montamos a instrução sql para fazer a exclusão dos
dados da tabela.
Interface gráfica
Nesta seção, vamos apresentar a parte do sistema responsável pela
interação com o usuário por meio de uma interface gráfica.
Entrada de dados.
Este método lê os dados que estão nas caixas de texto e os retorna para
quem faz a chamada.
Na linha 123, as variáveis “codigo”, “nome” e “preco” retornam para quem faz
a chamada do método.
Agora, vamos apresentar o método “fCadastrarProduto”, conforme podemos
ver na imagem a seguir.
Este método tem como objetivo fazer a inserção dos dados na tabela
“PRODUTOS”.
Linha 130 - Os dados digitados nas caixas de texto são recuperados nas
variáveis “codigo”, “nome” e “preco”.
Programa principal.
video_library
Finalização da construção do protótipo
Acompanhe a finalização da construção do protótipo do sistema utilizando a
linguagem python, uma interface GUI e a conexão ao banco de dados.
Questão 1
Python
content_copy
Questão 2
A if-else
B try-except
C if-elif
D try-catch
E if-else
Parabéns! A alternativa B está correta.
Considerações finais
No decorrer do texto, apresentamos os principais frameworks e as
bibliotecas para desenvolver aplicações de interface gráfica, exploramos a
biblioteca “tkinter” com exemplos para usar os seus componentes gráficos e
também a biblioteca “psycopg2”, para realizar operações no PostgreSQL,
além de apresentarmos uma aplicação que relaciona interface gráfica com
operações no banco de dados.
headset
Podcast
Ouça agora sobre o processo de desenvolvimento de interfaces gráficas
com a linguagem Python.
Explore +
Para saber mais sobre os assuntos tratados neste tema, pesquise na
internet:
Referências
MEIER, B. A. python GUI Programming Cookbook. Birmingham, United
Kingdom: Packt Publishing Ltd., 2015.
Download material
Relatar problema