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.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 1/82
05/04/2024 15:17 Interface gráfica com python
Objetivos
Módulo 1
Módulo 2
Módulo 3
Módulo 4
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 2/82
05/04/2024 15:17 Interface gráfica com python
meeting_room
Introdução
Cada vez mais, nós geramos e consumimos dados para realizarmos atividades que vão desde a abertura de
uma conta bancária até as informações que disponibilizamos nas redes sociais.
Portanto, é necessário entender como esses dados são gerenciados, pois são importantes para identificar
pessoas, preferências, produtos, transações financeiras, entre tantas outras aplicações.
Para fazer esse gerenciamento, as aplicações usam sistemas gerenciadores de banco de dados a fim de
realizar operações de inserção, consulta, alteração e exclusão de dados.
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.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 3/82
05/04/2024 15:17 Interface gráfica com python
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).
O framework mais comum é o Tkinter (python interface to Tcl/Tk-2020) que já faz parte da instalação
python, mas existem outros frameworks com características específicas que podem torná-los a escolha
adequada para um projeto.
video_library
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 4/82
05/04/2024 15:17 Interface gráfica com python
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
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 5/82
05/04/2024 15:17 Interface gráfica com python
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!
Devido à importância do Tkinter, vamos explorá-lo com bastantes detalhes mais à frente.
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:
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 6/82
05/04/2024 15:17 Interface gráfica com python
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
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 7/82
05/04/2024 15:17 Interface gráfica com python
CEF python
É um projeto de código aberto voltado para o desenvolvimento de aplicações com integração ao Google
Chrome. Existem muitos casos de uso para CEF. Por exemplo, ele pode ser usado para criar uma GUI
baseada em HTML 5, pode usá-lo para testes automatizados, como também pode ser usado para web
scraping, entre outras aplicações.
Terminal
content_copy
Para testar a instalação do CEF python, basta escrever o código abaixo na linha de comando, ou em um
arquivo, e executar:
Python
content_copy
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 8/82
05/04/2024 15:17 Interface gráfica com python
Atenção!
Como esse exemplo, apesar de simples, é um pouco maior, cabe lembrar que a indentação faz parte da
sintaxe do python (python 3.8.5 documentation, 2020), por isso, é necessário ter bastante cuidado, caso
contrário o programa apresentará erros.
Observe o título da janela: “Olá, mundo! Este é o primeiro exemplo do CEF python”.
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).
Com o mesmo código, a aplicação funciona para Windows, macOS, Linux, Android e iOS. Todos os widgets
Kivy são construídos com suporte multitoque.
Terminal
content_copy
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 9/82
05/04/2024 15:17 Interface gráfica com python
Python
content_copy
Na imagem anterior, é possível identificar o título da janela “Exemplo” e um componente botão no centro da
tela com a mensagem “Olá, Mundo!”. Um ponto interessante pode ser observado no código, que é a
utilização da programação orientada a objetos.
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.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 10/82
05/04/2024 15:17 Interface gráfica com python
2. Pyforms-web.
3. Pyforms-terminal.
Essas camadas podem ser usadas individualmente ou em conjunto, dependendo da instalação do Pyforms.
Para fazer a instalação básica, é necessário escrever na linha de comando:
Python
content_copy
Python
content_copy
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 11/82
05/04/2024 15:17 Interface gráfica com python
Comentário
No exemplo da imagem anterior, é possível ver três caixas de texto, chamadas de “controle de texto”, e um
componente botão, chamado de “controle de botão” pelo Pyforms. Ele foi projetado a fim de desenvolver
aplicações para executar no modo Windows GUI.
PyQt
Uma aplicação desenvolvida no framework PyQt e executada nas plataformas Windows, macOS, Linux, iOS
e Android.
Trata-se de um framework que aborda, além de desenvolvimento GUI, abstrações de sockets de rede,
threads, Unicode, expressões regulares, bancos de dados SQL, OpenGL, XML, entre outras aplicações.
Suas classes empregam um mecanismo de comunicação segura entre objetos que é fracamente acoplada,
tornando mais fácil criar componentes de software reutilizáveis.
Terminal
content_copy
Python
content_copy
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 12/82
05/04/2024 15:17 Interface gráfica com python
No exemplo da imagem acima, é possível identificar uma janela, o título da janela e uma mensagem ao
centro.
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!
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 13/82
05/04/2024 15:17 Interface gráfica com python
As bibliotecas PyQt e Tkinter têm componentes personalizados. Por isso é bastante comum que as
aplicações fiquem com um aspecto diferente das nativas do sistema operacional. Apesar disso, o wxpython
também oferece suporte a componentes personalizados.
Terminal
content_copy
Python
content_copy
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 14/82
05/04/2024 15:17 Interface gráfica com python
No exemplo da imagem anterior, é possível identificar uma janela, o seu respectivo título, uma caixa de texto
e um botão com a mensagem “Pressione esse componente!”.
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
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 15/82
05/04/2024 15:17 Interface gráfica com python
Python
content_copy
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 16/82
05/04/2024 15:17 Interface gráfica com python
Usar a função de interpolação/atenuação para mover o mouse por 2 segundos com pausa de
um quarto de segundo entre cada tecla.
S lt t l Shift
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 17/82
05/04/2024 15:17 Interface gráfica com python
Soltar a tecla Shift.
Mostrar uma caixa de alerta aparecer na tela e pausar o programa até clicar em OK.
Atenção!
Antes de executar o código, cabe um alerta: Essa aplicação, apesar de ser muito simples, vai interagir com o
seu sistema.
A imagem vista anteriormente aparecerá depois do “cursor do mouse” se movimentar na tela e o “teclado”
escrever a mensagem “Esta é a mensagem para tela”.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 18/82
05/04/2024 15:17 Interface gráfica com python
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
Python
content_copy
Exemplo PySimpleGUI.
No exemplo da imagem anterior, é possível identificar uma janela, o seu respectivo título, dois componentes
“label”, uma caixa de texto e dois botões.
Atenção!
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 19/82
05/04/2024 15:17 Interface gráfica com python
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:
Facilidade de interação do usuário com o sistema por meio da utilização de componentes intuitivos.
Criação de uma camada de abstração para o programador sobre detalhes da programação dos
componentes.
Bastante documentada e com uma comunidade engajada, o que ajuda a perceber novas aplicações e
evoluções dos componentes que vão melhorar a aplicação dos componentes GUI no sistema.
Desvantagens
Também devem ser levadas em consideração as desvantagens relacionadas às escolhas de
bibliotecas/frameworks da interface GUI:
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 20/82
05/04/2024 15:17 Interface gráfica com python
Alguns componentes de interface gráfica usam muitos recursos computacionais, pois têm como objetivo
ser amigáveis para o usuário e não necessariamente fazer uso otimizado dos recursos. Como
consequência, podem tornar as aplicações muitos lentas para plataformas de versões mais antigas.
O uso dos componentes na programação pode ser excessivamente complexo, fazendo com que o
desenvolvedor tenha que desviar esforço do objetivo principal para se preocupar com detalhes dos
componentes GUI.
Sistemas baseados em componentes GUI requerem mais memória RAM para serem executados.
Ainda sobre uso de recursos computacionais, sistemas baseados em componentes GUI demandam por
processamento.
Podem ter um comportamento distinto quando operam em diferentes plataformas, tanto na parte visual
como pela demanda de recursos computacionais.
O tempo necessário para utilizar os componentes GUI no sistema pode ser longo, em especial quando há
necessidade de atender a muitos requisitos de infraestrutura.
A curva de aprendizado para profissionais não experientes pode ser proibitiva para o desenvolvimento de
projetos de curto de prazo.
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.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 21/82
05/04/2024 15:17 Interface gráfica com python
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:
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 22/82
05/04/2024 15:17 Interface gráfica com python
Questão 2
A biblioteca Tkinter sempre será a melhor escolha para um projeto de interface gráfica,
A
pois é compatível com múltiplas plataformas.
A biblioteca Tkinter é a base para que todos os outros frameworks GUI possam ser
D
utilizados.
Para testar se ela está instalada corretamente, pode-se escrever duas linhas de código
E
que são import tkinter e tkinter._test().
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 23/82
05/04/2024 15:17 Interface gráfica com python
De fato, a biblioteca Tkinter é a mais importante do Python por estar disponível na instalação padrão do
Python, no entanto, apesar da facilidade de aplicação, ela não é adequada para aplicações específicas,
como jogos.
Biblioteca Tkinter
Neste vídeo, vamos mergulhar na aplicação da biblioteca Tkinter em projetos Python. Aprenderemos como
criar interfaces gráficas interativas de forma simples e eficaz. Exploraremos a construção de janelas,
widgets e interações com o usuário, abordando desde conceitos básicos até funcionalidades avançadas.
Prepare-se para dominar a criação de GUIs atrativas e funcionais usando a poderosa biblioteca Tkinter.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 24/82
05/04/2024 15:17 Interface gráfica com python
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.
Para usar o Tkinter – supondo que você já instalou o Pyhton e o pacote Tkinter ‒, é necessário executar as
seguintes etapas:
Entrar no loop de evento principal para tratar os eventos disparados pelo usuário.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 25/82
05/04/2024 15:17 Interface gráfica com python
Python
content_copy
Widgets Tkinter
O Tkinter possui diversos componentes (widgets), tais como botões, rótulos e caixas de texto usados para
criar aplicações interativas com o usuário.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 26/82
05/04/2024 15:17 Interface gráfica com python
Botão de verificação É usado para exibir várias opções como caixas de seleção. O usuário
(Checkbutton) pode selecionar várias opções ao mesmo tempo.
É usado para exibir uma caixa de texto de linha única para que o
Entrada de texto (Entry)
usuário digite valores de entrada.
É usado para fornecer uma legenda de linha única para outros widgets.
Rótulo (Label)
Também pode conter imagens.
Caixa de listagem
É usado para fornecer uma lista de opções para um usuário.
(Listbox)
Botão de rádio É usado para exibir várias opções, como botões de rádio. O usuário
(Radiobutton) pode selecionar apenas uma opção por vez.
Barra de rolagem
É usado para adicionar capacidade de rolagem a vários widgets.
(Scrollbar)
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 27/82
05/04/2024 15:17 Interface gráfica com python
Cada um desses widgets possuem propriedades que permitem personalizar tamanhos, cores e fontes que
serão exibidos para o usuário.
Na próxima seção, apresentaremos alguns exemplos que vão ajudar a entender como desenvolver uma
aplicação GUI.
1. Window
2. Label
3. Button
4. Entry
5. Radiobutton
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 28/82
05/04/2024 15:17 Interface gráfica com python
6. Checkbox
7. Text
8. Message
9. Sliders
10. Dialog
11. Combobox
Python
content_copy
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 29/82
05/04/2024 15:17 Interface gráfica com python
Linha 3 - O método “title” é usado para definir um título que aparece no topo da janela, no caso,
“Aplicação GUI”.
A janela da aplicação anterior é redimensionável, ou seja, o usuário pode alterar as dimensões da janela se
ele clicar com o cursor do mouse na janela e arrastá-la.
Para fixar o tamanho da janela, é necessário determinar essa propriedade conforme o código seguinte:
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
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 30/82
05/04/2024 15:17 Interface gráfica com python
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
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 31/82
05/04/2024 15:17 Interface gráfica com python
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”.
Linha 14 - Chamada para a função “contador_label”, função que faz a contagem dos segundos e a
atualização dos dados do componente “label”.
Linha 15 - Criação de uma instância do componente “botão” com uma mensagem, largura do
componente e o estabelecimento de um comportamento, no caso, fechar a janela, quando o usuário
pressionar o botão.
Widget Entry
Agora, vamos analisar o componente “entry”. Ele é uma das principais formas de o usuário entrar com
dados no sistema.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 32/82
05/04/2024 15:17 Interface gráfica com python
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.
No caso do exemplo da imagem anterior, com poucas modificações, pode ser aplicado para muitas
situações reais.
Linha 2 - É implementada a função “mostrar_nomes”, que vai exibir na linha de comando os nomes que
estão escritos nas instâncias “e1” e “e2” do componente “entry”.
Linha 12 e 13 - São instanciados objetos do componente “botão”. Em especial, na linha 13, a função
“mostrar_nomes” é associada ao comportamento do botão.
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:
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 33/82
05/04/2024 15:17 Interface gráfica com python
Python
content_copy
O código produzirá uma janela com dois “botões de rádio” (widgets radiobutton), conforme a imagem a
seguir.
Linha 4 - É instanciado um componente “label” com a parametrização das propriedades “text”, “justify” e
“padx” que correspondem, respectivamente, ao texto, a como ele será justificado e à largura em pixels do
componente.
Linha 5 e 6 - São instanciados os componentes “radiobuttons”. A propriedade “variable” recebe o valor “v”,
indicando que o componente será colocado na vertical.
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
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 34/82
05/04/2024 15:17 Interface gráfica com python
O código produzirá uma janela com um “label”, dois “checkboxes” e dois botões, conforme a Figura 16.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 35/82
05/04/2024 15:17 Interface gráfica com python
Linha 4 - É implementada a função “escolha_carreira”, que exibirá os valores dos objetos “var1” e “var2”,
que estão relacionados aos “checkboxes”.
Linhas 7 e 9 - São instanciados os objetos “var1” e “var2”, que serão associados aos “checkboxes”.
Quando um “checkbox” for selecionado, o seu respectivo objetivo vai retornar valor 1; caso o componente
não seja selecionado, o valor do objeto será 0.
Linhas 8 e 10 - São instanciados objetos dos componentes “checkboxes”, que são associados,
respectivamente, às opções Gerencial e Técnica.
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
Linha 5 - É inserido um texto na instância do componente “text”, que será exibido na tela. Observe que o
texto é separado em duas linhas com o uso do “\n”.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 36/82
05/04/2024 15:17 Interface gráfica com python
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
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 37/82
05/04/2024 15:17 Interface gráfica com python
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
O código produzirá uma janela com duas linhas deslizantes, conforme a imagem a seguir.
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.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 38/82
05/04/2024 15:17 Interface gráfica com python
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
O código produzirá uma janela com dois botões, conforme a imagem a seguir.
Resposta
Caso o usuário pressione o botão “Resposta”, aparecerá uma janela com a mensagem “Desculpe,
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 39/82
05/04/2024 15:17 Interface gráfica com python
close
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
Caso o usuário pressione o botão “Yes”, aparecerá uma janela com a mensagem “Ainda não foi
implementado”, conforme mostra a imagem.
close
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 40/82
05/04/2024 15:17 Interface gráfica com python
No
Por outro lado, se o usuário pressionar o botão “No” da janela da imagem, será exibida uma janela com
a mensagem “A opção de Sair foi cancelada”, conforme mostrado na imagem.
Esse exemplo é bastante interessante, pois, apesar de pouca implementação, é possível que o usuário tenha
bastante interação com o sistema.
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
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 41/82
05/04/2024 15:17 Interface gráfica com python
video_library
Projetando a interface gráfica
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 42/82
05/04/2024 15:17 Interface gráfica com python
Agora, daremos continuidade e projetaremos a interface gráfica. Veja como são carregados os widgets
necessários para o funcionamento do protótipo.
Questão 1
Python
content_copy
Para que o código seja compilado e executado corretamente, as palavras lacuna_I, lacuna_II e lacuna_III
devem ser substituídas, respectivamente, por:
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 43/82
05/04/2024 15:17 Interface gráfica com python
A Tkinter é considerada a biblioteca padrão de interface gráfica do Python. Para que um programa que
faz uso de seus componentes possa rodar, é necessário importar a biblioteca, instanciar um
componente “window” que é a “raiz” da interface gráfica onde os demais componentes serão
adicionados e, por fim, fazer a chamada (invocação) do método “mainloop”.
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.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 44/82
05/04/2024 15:17 Interface gráfica com python
D Label: é usado para fornecer uma legenda para outros componentes do projeto.
O componente “label” é muito útil para fornecer uma explicação a respeito de uma funcionalidade do
sistema, por exemplo, ele pode acompanhar uma caixa de texto (widget entry) com a legenda “nome”,
que dá a entender para o usuário que ele precisa preencher seu próprio nome.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 45/82
05/04/2024 15:17 Interface gráfica com python
Visão geral
Neste vídeo, vamos explorar a integração entre Python e PostgreSQL, um dos bancos de dados mais
populares. Aprenderemos como estabelecer conexões, executar consultas SQL e manipular dados
diretamente da linguagem Python. Descubra como essa integração pode otimizar a gestão de dados e
agilizar processos de análise e visualização. Prepare-se para aprofundar suas habilidades na interação entre
linguagem de programação e banco de dados.
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.
Para explicar como o python interage com o PostgreSQL, trabalharemos na seguinte aplicação:
RUD
Acrônimo da expressão do idioma Inglês, Create (Criação), Read (Consulta), Update (Atualização) e Delete
(Destruição).
A ideia é desenvolvermos uma aplicação CRUD para que os usuários possam interagir com o sistema para
inserir, modificar, consultar e excluir dados de uma agenda telefônica, e que essas operações fiquem sob a
responsabilidade do sistema gerenciador de banco de dados.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 46/82
05/04/2024 15:17 Interface gráfica com python
Dica
Sql
content_copy
Para testar se a criação da tabela está correta, pode-se inserir um registro da seguinte maneira:
Sql
content_copy
Sql
content_copy
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 47/82
05/04/2024 15:17 Interface gráfica com python
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
Para interagir com o banco de dados PostgreSQL com o uso da biblioteca psycopg2, primeiro é necessário
criar um objeto Connection, que representa o banco de dados, e, em seguida, pode-se criar um objeto cursor
que será bastante útil para executar todas as instruções SQL. Isso será detalhado um pouco mais à frente.
Antes disso, vamos apresentar as principais APIs (rotinas de interface de programação) da psycopg2:
PostgreSQL expand_more
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 48/82
05/04/2024 15:17 Interface gráfica com python
A conexão com o banco de dados PostgreSQL é feita com essa API. O banco de dados retorna um
objeto de conexão, se o banco de dados for aberto com sucesso. Para aplicações que vão rodar
localmente, utiliza-se o endereço de localhost dado por 127.0.0.1". A porta de comunicação padrão
do PostgreSQL é a "5432", mas esse valor pode ser mudado.
connection.cursor ()
Esta API cria um cursor que será usado ao longo da programação para interagir com o banco de
dados com python.
Esta rotina é aplicada para executar uma instrução SQL. A instrução SQL pode ser parametrizada.
Sql
content_copy
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 49/82
05/04/2024 15:17 Interface gráfica com python
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.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”.
cursor.fetchall() Esta rotina busca todas as linhas (restantes) de um resultado de consulta, retornando
uma lista. Uma lista vazia é retornada quando nenhuma linha está disponível.
Um exemplo completo
Agora, apresentaremos um exemplo completo de como usar o psycopg2 que abordará:
Neste vídeo, vamos colocar em prática a integração entre Python e PostgreSQL usando a biblioteca
psycopg2. Através de um exemplo passo a passo, aprenderemos a estabelecer conexões, executar
consultas e operações de escrita no banco de dados. Você verá como essa abordagem é fundamental para
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 51/82
05/04/2024 15:17 Interface gráfica com python
manipular dados de forma eficiente e segura. Prepare-se para dominar o uso do psycopg2 e impulsionar
suas habilidades de programação com bancos de dados.
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
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 52/82
05/04/2024 15:17 Interface gráfica com python
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!
Linha 2 - É feita a conexão com o banco de dados. Observe os parâmetros da função “connect”, pois é
necessário que você crie um banco no PostgreSQL com usuário e senha, conforme escrito na função.
Linha 4 - É criado o cursor que vai permitir realizar operações no banco de dados.
Linha 5 - Executa o comando SQL para criar a tabela “Agenda” com os campos “ID”, “Nome” e “Telefone”.
Linha 10 - É executada a função “commit” para confirmar a execução das operações SQL.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 53/82
05/04/2024 15:17 Interface gráfica com python
O exemplo desse código mostra como inserir um registro em uma tabela a partir do python usando a
biblioteca psycopg2.
Sql
content_copy
Conexão com o Banco de Dados feita com Sucesso! Inserção realizada com sucesso!
Linha 5 - É executado o comando SQL para inserir dados na tabela AGENDA.No caso, o registro é
formado pelos seguintes dados: O campo “id” recebe o valor 1, o campo “nome” recebe o valor ‘Pessoa 1’
e, por fim, o campo “telefone” recebe o valor ‘02199999999’.
Essa linha tem mais algumas questões que merecem destaque: O uso de aspas simples e duplas.
No caso do banco de dados PostgreSQL, o nome da tabela e dos campos deve estar entre aspas duplas,
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 54/82
05/04/2024 15:17 Interface gráfica com python
por causa disso é que o comando insert possui três aspas duplas logo no início e no final. Sendo assim,
muita atenção com isso, pois existem algumas variações conforme o sistema gerenciador de banco de
dados escolhido.
Linha 6 a 8 - Do mesmo modo como foi realizado no exemplo de criação da tabela “Agenda”, são
realizadas as seguintes operações: “commit” das operações do banco de dados, fechamento da conexão
com o banco de dados, impressão na linha de comando da mensagem “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:
“Commit” das operações realizadas no banco de dados para confirmar a execução delas. Esse
comando é obrigatório.
arrow_forward
Agora, vamos analisar o código que mostra como selecionar um registro em uma tabela a partir da
biblioteca psycopg2 do python.
Python
content_copy
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 55/82
05/04/2024 15:17 Interface gráfica com python
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.
Linha 6 - É executado o método “fetchone” que recupera exatamente um registro do “cursor” e atribui para
a variável “registro”.
Python
content_copy
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 56/82
05/04/2024 15:17 Interface gráfica com python
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”.
Perceba, ainda, que é associado o comando “commit” para o comando “update” do sql na linha 11.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 57/82
05/04/2024 15:17 Interface gráfica com python
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”.
Linha 7 - A propriedade “rowcount” do “cursor” retorna a quantidade de registros que foram excluídos da
tabela “Agenda”.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 58/82
05/04/2024 15:17 Interface gráfica com python
Saiba mais
Além da biblioteca psycopg2, existem outras bibliotecas para trabalhar com vários sistemas gerenciadores
de banco de dados. Por exemplo:
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.
Questão 1
Considere o fragmento de código Python abaixo que utiliza a biblioteca “psycopg2” para fazer
operações no sistema gerenciador de banco de dados Postgre:
Python
content_copy
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 59/82
05/04/2024 15:17 Interface gráfica com python
Para que o código seja compilado e executado corretamente, as palavras lacuna_I, lacuna_II e lacuna_III
devem ser substituídas, respectivamente, por:
Questão 2
Existem muitas bibliotecas disponíveis para Python para fazer interface com sistemas gerenciadores
de bancos de dados. Entre elas, está a “psycopg2”. Essa biblioteca faz interface com o PostgreSQL, que
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 60/82
05/04/2024 15:17 Interface gráfica com python
é um sistema importante para desenvolver aplicações reais. Nesse sentido, selecione a opção que
relaciona B às APIs do psycopg2 e suas funcionalidades.
O comando “execute” é fundamental para executar as instruções do sql para fazer inserção, consulta,
atualização e exclusão de registros no banco de dados.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 61/82
05/04/2024 15:17 Interface gráfica com python
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.
Neste módulo, criaremos uma aplicação que integra tanto elementos de interface gráfica quanto operações
com banco de dados.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 62/82
05/04/2024 15:17 Interface gráfica com python
O usuário fará a entrada de dados mediante componentes de caixas de texto (widget entry) e confirmará a
ação que deseja quando pressionar o botão correspondente.
Além disso, os dados que estão armazenados no banco são exibidos em um componente do tipo grade
(widget treeview). O usuário tem a possibilidade de selecionar um registro na grade, o qual será exibido nas
caixas de texto, onde poderá ser modificado ou excluído.
Atenção!
Perceba que alguns dados já estão armazenados no banco e são exibidos na grade. Veja que o usuário
selecionou o “produto_7” na grade e seus dados estão exibidos nas caixas de texto.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 63/82
05/04/2024 15:17 Interface gráfica com python
Comentário
No caso do nosso sistema, vamos criar a tabela Produto, que tem três campos: “CODIGO”, “NOME” e
“PRECO”.
Estamos usando o PostgreSQL para gerenciar nossos dados. O PostgreSQL é um sistema gerenciador de
banco de dados de licença gratuita e é considerado bastante robusto para aplicações de um modo geral.
Em seguida, precisamos criar os campos tabelas. Para isso, selecionamos a opção “Columns” da imagem
anterior. Será exibida a tela da imagem seguinte, na qual podemos adicionar as colunas por meio da opção
“+” no canto superior direito da tela.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 64/82
05/04/2024 15:17 Interface gráfica com python
Perceba que o campo “CODIGO” é a chave primária da tabela e, além disso, todos os
campos não podem ser vazios.
Agora, salvamos a tabela e, finalmente, ela é criada no banco de dados. Na imagem a seguir, podemos ver a
tabela no pgAdmin.
O pgAdmin é bastante útil para fazermos operações sobre as tabelas. Na imagem seguinte, mostramos
como inserir dados na tabela “PRODUTO”.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 65/82
05/04/2024 15:17 Interface gráfica com python
Para executar o comando de inserção, basta pressionar a seta no canto direito superior da tela.
Outra forma de criar uma tabela é mediante o próprio python, com o uso da biblioteca “psycopg2”.
Na próxima imagem, mostramos o código para criação da tabela “PRODUTO”. O código para criação da
tabela pode ser baixado clicando aqui.
Linha 9 - Fazemos a conexão ao banco de dados “postgres” com o usuário “postgres”, senha “senha123”,
host local (127.0.0.1) e porta “5432”.
Linha 13 - Abrimos o cursor. Lembre-se de que é com o cursor que fazemos as operações no banco de
dados.
Linha 14 a 16 - Executamos o comando sql “Create Table” para criar a tabela “PRODUTO” com os campos
“CODIGO”, “NOME” e “PRECO”.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 66/82
05/04/2024 15:17 Interface gráfica com python
Linha 34 e 35 - Montamos o comando sql. Mas nesse momento, trata-se apenas de um texto (string) que
deve seguir uma sintaxe cuidadosa: três aspas duplas no início e no final do texto. Além disso, perceba
os “%s” no trecho do “VALUES” que serão usados para entrar com os dados das variáveis.
Linha 37 - Aplicamos o comando “execute”, que executa o comando sql com a entrada de dados que
definimos na variável registro.
Comentário
Esse exemplo é simples, mas ilustra testes que podem ser feitos logo no começo do projeto que são úteis
para validar a entrada de dados, além de ser útil para os desenvolvedores aprenderem mais sobre o próprio
sistema.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 67/82
05/04/2024 15:17 Interface gráfica com python
O sistema foi desenvolvido usando programação orientada a objetos. O arquivo do programa foi salvo com
o nome “crud.py”.
A classe com os métodos para realizar as operações para interagir com o banco de dados é a “AppBD”,
conforme podemos ver na próxima imagem.
Linha 13 - Implementamos o construtor da classe, que é o método que é chamado logo que um objeto da
classe AppBD for instanciado.
Linha 16 a 25 - Implementamos o método para abrir a conexão. Perceba as cláusulas “try” e “except”.
Isso é fundamental para criar um programa confiável, ou seja, com tolerância a falhas, pois o programa
tenta seguir o fluxo normal de execução, ou seja, abrir a conexão com o banco de dados.
Comentário
Caso ocorra algum problema, ao invés de o programa interromper a execução e exibir uma mensagem de
erro, revelando vulnerabilidades do sistema que podem ser exploradas por um atacante, ele vai exibir uma
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 68/82
05/04/2024 15:17 Interface gráfica com python
mensagem amigável para o usuário, no caso, será “Falha ao se conectar ao Banco de Dados”.
Seleção de dados.
Linha 52 - Retornamos os registros para quem faz a chamada para o método “selecionarDados”.
Agora, vamos explicar o método para fazer a inserção de dados. O código do método está na imagem a
seguir.
Inserção de dados.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 69/82
05/04/2024 15:17 Interface gráfica com python
Linha 63 - Executamos a instrução sql para fazer a inserção do registro da variável “record_to_insert”.
Agora, vamos analisar o método responsável pela atualização de dados. O código é apresentado na imagem
seguinte.
Linha 92 e 93 - Montamos a instrução sql para fazer a modificação dos dados da tabela.
Linha 94 - Executamos a instrução sql para fazer a modificação do registro de acordo com a tupla
“(nome, preco, codigo)”.
Agora, vamos analisar o método que trata da exclusão de dados. O código é apresentado na imagem a
seguir.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 70/82
05/04/2024 15:17 Interface gráfica com python
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.
Linha 123 - Executamos a instrução sql para fazer a exclusão do registro de acordo com o parâmetro
“codigo” passado para o método.
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.
Do mesmo modo que a classe “AppBD”, esse programa também foi desenvolvido em
programação orientada a objetos.
O arquivo do programa foi salvo com o nome “aplicacaoCRUD.py”. A classe com os atributos e métodos
para trabalhar com a interface gráfica e interagir com a classe responsável pelas operações com o banco de
dados é a “PrincipalBD”, conforme podemos ver na imagem a seguir.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 71/82
05/04/2024 15:17 Interface gráfica com python
Classe principal.
Linha 10 - Importamos o módulo ttk para podermos trabalhar com o componente “TreeView”, que foi
usado como uma grade para exibir os dados armazenados na tabela “PRODUTO”.
Linha 14 - Implementamos o construtor ( __init__ ) da classe PrincipalBD, que será chamado logo que um
objeto do tipo PrincipalBD for instanciado.
Linha 24 a 27 - Instanciamos os componentes botões (“button”), que vão acionar as operações CRUD.
Atenção!
O construtor ainda possui mais duas partes. Uma delas é responsável por instanciar e configurar o
componente “TreeView”, conforme podemos ver na próxima imagem.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 72/82
05/04/2024 15:17 Interface gráfica com python
Configuração de componentes.
Este método exibe os dados selecionados na grade (componente “TreeView”) nas caixas de texto, de modo
que o usuário possa fazer alterações, ou exclusões sobre eles.
Linha 76 - Fazemos a chamada para a função “fLimparTela”, que limpa o conteúdo das caixas de texto.
Linha 79 - Os dados do item selecionados são, agora, associados às variáveis “codigo”, “nome” e “preco”.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 73/82
05/04/2024 15:17 Interface gráfica com python
Este método carrega os dados que já estão armazenados na tabela para serem
exibidos na grade de dados (componente “TreeView”).
Linha 86 e 87 - Os atributos “id” e “iid” são iniciados com valor 0. Eles são necessários para gerenciar o
componente “TreeView”.
Linha 88 - É feita a chamada para o método “selecionarDados” que está na classe “AppBD”. Ele recupera
todos os registros armazenados na tabela.
Agora, vamos apresentar o método “fLerCampos”, conforme podemos ver na imagem abaixo.
Entrada de dados.
Este método lê os dados que estão nas caixas de texto e os retorna para quem faz a chamada.
Por exemplo, na linha 114, a variável “codigo” recebe o valor da caixa de texto “txtCodigo” depois que ele é
convertido para um valor do tipo “inteiro”.
Na linha 123, as variáveis “codigo”, “nome” e “preco” retornam para quem faz a chamada do método.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 74/82
05/04/2024 15:17 Interface gráfica com python
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”.
Linha 131 - Fazemos a chamada ao método “inserirDados”, que fará a inserção dos dados na tabela
“PRODUTO”.
Agora, vamos analisar o método “fAtualizarProduto”, conforme podemos ver na próxima imagem.
O objetivo deste método é atualizar os dados que o usuário selecionou na grade de dados
(o componente “TreeView”).
Linha 149 - Os dados selecionados da grade de dados são recuperados nas variáveis “codigo”, “nome” e
“preco”.
Linha 150 - Chamamos a função “atualizarDados”, que fará as modificações dos dados na tabela
“PRODUTO”.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 75/82
05/04/2024 15:17 Interface gráfica com python
Linha 153 - Fazemos a chamada ao método “carregarDadosIniciais” para recarregar a grade de dados
com os dados da tabela.
Agora, vamos analisar o método “fExcluirProduto”, conforme podemos ver na imagem seguinte.
O objetivo deste método é excluir os dados que o usuário selecionou na grade de dados (o componente
“TreeView”).
Linha 164 - Os dados selecionados da grade de dados são recuperados nas variáveis “codigo”, “nome” e
“preco”.
Linha 165 - Chamamos a função “excluirDados”, que excluirá os dados da tabela “PRODUTO”.
Linha 168 - Fazemos a chamada ao método “carregarDadosIniciais” para recarregar a grade de dados
com os dados da tabela.
Agora, vamos analisar o método “fLimparTela”, conforme podemos ver na imagem a seguir.
Este método limpa o conteúdo das caixas de texto, conforme podemos ver nas linhas 179
a 181.
Por fim, apresentamos o programa principal que vai iniciar a execução do sistema, conforme podemos ver
na próxima imagem.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 76/82
05/04/2024 15:17 Interface gráfica com python
Programa principal.
Linha 188 - Instanciamos o objeto raiz da aplicação gráfica que chamamos de “janela”.
Linha 189 - Instanciamos o objeto principal que vai gerenciar a execução da aplicação.
Linha 192 - Chamamos o método “mainloop”, que coloca a aplicação para executar até que o usuário
interrompa a execução.
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
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 77/82
05/04/2024 15:17 Interface gráfica com python
Considere o fragmento de código Python abaixo que utiliza a biblioteca “psycopg2” para fazer CRIAR a
tabela PRODUTOv2 no PostgreSQL:
Python
content_copy
O tipo campo “PRECO” deve ser modificado para “REAL NOT NULL”, caso contrário vai
B
ocorrer um erro na criação da tabela.
As palavras lacuna_I e lacuna_II devem ser substituídas por “try:” e “except (Exception,
C
psycopg2.Error) as error:” para prevenir a ocorrência de exceções.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 78/82
05/04/2024 15:17 Interface gráfica com python
As palavras lacuna_I e lacuna_II devem ser substituídas por “Begin”, para marcar o início
do programa, e “End”, para indicar o fim do trecho sql.
Questão 2
Durante a execução de um programa em Python podem ocorrer problemas que, se não forem tratados
adequadamente, vão interromper o programa e exibir uma mensagem de erro para o usuário sem
nenhum tipo de tratamento. Nesse sentido, selecione a opção que apresenta a forma adequada de
tratar exceções no Python:
A if-else
B try-except
C if-elif
D try-catch
E if-else
A cláusula “try” tenta executar o fluxo normal do programa. Caso ocorra algum problema, a cláusula
“except” permite tratar a exceção e exibir uma mensagem amigável para o usuário sem a interrupção do
programa. O Python não obriga o uso das cláusulas “try-except”, mas trata-se de uma boa prática de
programação.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 79/82
05/04/2024 15:17 Interface gráfica com python
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.
A linguagem python facilita bastante o desenvolvimento de aplicações de interface gráfica e que façam
operações no banco de dados. É natural que o desenvolvedor iniciante tenha a impressão de que é um
projeto complexo, mas, com um pouco de prática, as vantagens de programar nesse ambiente vão ficar
evidentes.
O python é uma linguagem muito bem documentada e possui uma comunidade engajada em resolver
problemas e disponibilizar as soluções em ambientes públicos. Exploramos algumas bibliotecas, mas
existem muitas outras. A escolha de uma delas deve levar em consideração questões como tempo para
desenvolvimento, maturidade do programador e quais os recursos computacionais que se têm à disposição.
headset
Podcast
Ouça agora sobre o processo de desenvolvimento de interfaces gráficas com a linguagem Python.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 80/82
05/04/2024 15:17 Interface gráfica com python
Explore +
Para saber mais sobre os assuntos tratados neste tema, pesquise na internet:
- Os sites oficiais do tkinter e do psycopg2 e aprenda mais detalhes técnicos sobre aplicações GUI e de
banco de dados, além de poder fazer downloads.
- Os sites oficiais das bibliotecas/frameworks/pacotes Kivy, Pyforms, PyQt, wxpython, PyAutoGUI e
PySimpleGUI para obter mais informações sobre aplicações GUI no python.
- Os sites oficiais das bibliotecas/frameworks/pacotes pyMySQL, cx_Oracle, PySqlite e PyMongo para obter
mais informações sobre aplicações de banco de dados no python.
Referências
MEIER, B. A. python GUI Programming Cookbook. Birmingham, United Kingdom: Packt Publishing Ltd., 2015.
SPYDER. The Scientific python Development Environment. [s.d.] spyder-ide.org. Consultado em 23 out.
2020.
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 81/82
05/04/2024 15:17 Interface gráfica com python
Download material
Relatar problema
https://stecine.azureedge.net/repositorio/00212ti/00748/index.html# 82/82