Seja bem-vindo(a) ao curso Criando um Projeto com Interface Gráfica utilizando a Linguagem Python!
Uma Interface Gráfica surpreendente e de fácil acesso é um diferencial em aplicações Mobile ou Desktop.
Neste curso, vamos criar um projeto com uma bela interface gráfica utilizando a Linguagem Python.
Bons estudos!
Pré-requisitos
Para que você obtenha um melhor desempenho neste curso, é recomendável ter conhecimentos em Lógica de Programação, Programação Orientada a Objetos e Linguagem de Programação Python – Básico.
Aqui na Escola Virtual nós oferecemos estes cursos em nosso catálogo:
Mudanças no conteúdo do curso em virtude de atualizações da ferramenta
Para o desenvolvimento deste curso, utilizamos as versões 3.9.6 do Python e a 2021.2.2 do PyCharm.
Nada impede que outras versões sejam lançadas rapidamente e o passo a passo de download e instalação fique um pouco diferente do que exemplificamos no decorrer deste curso. Você pode (e deve) usar sempre a versão mais recente, caso esteja disponível.
Quando ocorrem essas mudanças, que são diferentes do conteúdo apresentado no curso, é muito comum duvidarmos e até questionarmos se o que está sendo ensinado no curso é válido para o momento atual.
Não se preocupe! No geral, mudanças não são algo ruim, muito pelo contrário! Elas mostram que o Python e o PyCharm estão em constante evolução e isso é excelente, pois indica uma melhoria contínua. Caso você queira conhecer mais sobre essa versátil linguagem de programação, visite a comunidade Python no site https://python.org.br/.
As aplicações, sejam elas em formato mobile (celular) ou desktop (computador/notebook), têm grande importância na vida humana cotidiana, independentemente de estarmos olhando para a tela de um celular ou interagindo em nossos computadores.
Quando estamos acessando uma rede social, um jogo no celular, um aplicativo da área de trabalho do computador, ou até mesmo um site, estamos interagindo com o que chamamos de aplicativo ou widget, a depender da situação.
Hoje, eles são escritos em diferentes linguagens de programação (Java, Python, C++, C# etc.), inclusive juntando mais de uma linguagem para uma experiência cada vez melhor.
Com a evolução tecnológica, a possibilidade de criação dessas ferramentas gráficas se tornou cada vez mais interativa e de fácil acesso.
A linguagem Python, por exemplo, apresenta uma biblioteca chamadaKivy, que nos mostra que a possibilidade de se ingressar nesse mundo de aplicações utilizando apenas uma linguagem, porém, vale lembrar que podemos utilizar outras linguagens para uma excelente experiência visual.
A seguir conheceremos o Widget. Vamos lá?
Widget
Talvez o termo widget tenha se originado da junção das palavras em inglês window (janela) e gadget (dispositivo), o que jamais poderemos saber, pois esta é uma especulação na comunidade tecnológica.
Saiba Mais
Segundo a Wikipédia (2021):
“A primeira ocorrência desta foi encontrada em Beggar on Horseback (1924), uma peça escrita por George S. Kaufman e Marc Connelly. A peça se refere à protagonista que vivencia a dúvida entre ser um artista, com pouco ou nenhum retorno financeiro, ou trabalhar em uma linha de produção de widgets, em que o autor se referência claramente à objetos inanimados com um valor mercantil e sem nenhuma ligação espiritual ou artística.”
Essa ferramenta consiste em uma interface gráfica criada para facilitar o acesso a serviços e funções do celular, sem necessariamente rodar a aplicação para realizar determinada tarefa.
Os widgets apresentam:
Por exemplo: alguns desses atalhos podem preencher a tela inicial, enquanto outros ocupam menos espaço; uns têm tamanho ajustável, em que é possível personalizar a quantidade de informações exibidas de determinado atalho.
Os widgets podem trazer informações, como relógios, placares de jogos, previsão do tempo, entre outras ferramentas. Há também os atalhos de coleção, que exibem os mesmos elementos diversas vezes, como uma galeria de fotos, por exemplo. Já os players (apps de música), que permitem pular uma faixa, tocar ou pausar a canção, são chamados de widgetsde controle. O interessante também é que eles não precisam ser instalados à parte, já que o recurso vem no sistema ou embutido em aplicativos.
No mundo mobile, é muito mais comum que essas aplicações sejam feitas em linguagens como Flutter, Dart, Swift etc., que são linguagens propícias para essa situação.
Isso não quer dizer que não possamos fazer uma adaptação em Python ou Java, mas a questão é utilizar a ferramenta ideal para cada tipo de situação.
É um framework desenvolvido pelo Google para criação de aplicaçõesmóveis multiplataforma (Android e iOS), utilizando uma única base decódigo, e muito aclamado por sua facilidade em desenvolver aplicaçõescom uma interface intuitiva eagradável. Para a criação dessas interfaces,o Flutter utiliza um conceito de widgets.
Podemos pensar nos widgets como peças de montar: cada um pode ser considerado uma peça, e a união todas essas peças formam um brinquedo ou, neste caso, uma aplicação.
Quando pensamos em tipos de widgets, existem duas possibilidades:
Todo desenvolvimento tecnológico, seja ele um aplicativo, um widget, um site ou outro aparato que possa ser programado e ser executado, precisa ter uma arquitetura de desenvolvimento para que se defina um fluxo:
Fonte: Dev Community (Arquitetura)
Adiante você entenderá o que são Aplicativos em Python.
O que são Aplicativos
Quando falamos sobre aplicativos, podemos remeter a um marco de suas histórias: em 1983, o jovem Steve Jobs idealizou o que conhecemos hoje como Apple Store. Ele apresentou a ideia em uma conferência em Aspen naquele ano.
A Tribuna da Imprensa Livre publicou uma matéria acerca da história dos apps em que se discute um levantamento histórico e o uso dos aplicativos (RODRIGUEZ, 2019). Alguns pontos da matéria chamam a atenção, os quais elencaremos a seguir.
>>1. Em 1946, o mundo conheceu o Electronic Numerical Integrator and Computer (ENIAC), considerado o primeiro computador do mundo. Ele foi criado por cientistas americanos a pedido do exército, durante a Segunda Guerra Mundial, para resolver uma grande quantidade de cálculos balísticos. Pesava cerca de 30 toneladas e ocupava uma área de 180 m².
>>2. O processamento de dados do ENIAC era feito por meio de cartões perfurados manuseados por mulheres que trabalhavam no exército. A produção dessa máquina custou cerca de US$ 500 mil na época, o que hoje, com a inflação, equivaleria a aproximadamente US$ 6 milhões. Esse computador funcionou por dez anos e era capaz de realizar cálculos em uma velocidade superior à capacidade humana.
>>3. O surgimento do ENIAC revolucionou a área da informática, e foi só o primeiro passo para estimular a criação de outros computadores. Pouco a pouco, as máquinas foram evoluindo tanto no seu tamanho quanto no seu processamento. Por conta do alto custo financeiro, os computadores eram exclusivamente utilizados por grandes empresas e órgãos governamentais.
>>4. Foi só no fim da década de 70 que a computação doméstica foi ganhando espaço. Desenvolvido por Steve Jobs e Steve Wozniak, o Apple I, lançado em 1976, é considerado o primeiro computador pessoal no mundo a ser vendido totalmente montado. O sucesso foi tanto que logo foi lançado o Apple II, com capacidades gráficas e de som.
PAREI AQUI 26/06 CONTINUAR
>>5. Essa época foi muito importante para a história da computação. O desenvolvimento da tecnologia permitiu que as máquinas reduzissem seu tamanho, aumentassem sua velocidade e seu processamento de dados. Com o preço acessível, pela primeira vez, as pessoas comuns tinham contato direto com os computadores, o que permitiu uma nova forma de se relacionar com as informações. Foi o começo da realidade contemporânea.
.>>6 É claro que com esse avanço, outros jeitos de melhorar os computadores, também chamados de PC’s (Personal Computers), foram surgindo ao longo do tempo. Os chamados “softwares” são usados para definir uma sequência de instruções que são interpretadas por um computador. Já os softwares de aplicativos são programas que foram criados para exercer uma função própria, como, por exemplo, o Microsoft Word, que é um editor de texto.
>>7 Com a ajuda desses aplicativos desktop, o usuário pode resolver problemas gerais e realizar determinadas tarefas, seja em um ambiente de trabalho ou para uso pessoal. Os programas para computadores foram adquirindo uma nova forma e se adaptaram aos dispositivos eletrônicos móveis, como os players de música e o telefone celular.
>>8 A evolução do celular levou ao que hoje é popularmente conhecido como smartphone. Esse aparelho é uma combinação das características de um computador, com funcionalidades avançadas e que são estendidas pelos aplicativos móveis processados por seu sistema operacional. O IOS, da Apple, e o Android, do Google, são alguns desses sistemas.
>>9 O primeiro produto a mesclar a telefonia com a computação foi o IBM Simon, lançado em 1994. Apesar de ter muitas funções de um smartphone, como a tela sensível ao toque, ele não era conhecido como tal. Foi só em 1997 que o termo smartphone foi utilizado pela primeira vez com o lançamento do GS88 da Ericsson. A popularização veio com os aparelhos da Nokia e do Blackberry, que dominavam o mercado até a chegada do Iphone da Apple […] (RODRIGUEZ, 2019).
Agora que você aprendeu um pouco sobre a história dos Aplicativos, a seguir vamos conhecer as possibilidades do Python em Mobile e Desktop.
Possibilidades em Mobile e Desktop
O Python está em todo lugar, da inteligência artificial a cybersecurity, passando por análise de dados, computação gráfica e até por suporte futuro à computação quântica.
Atualmente, é difícil pensar uma área em que ele não esteja presente. Por isso, o mercado procura pessoas capacitadas e que dominam a linguagem, a depender da especificidade.
Existem alguns aplicativos que foram codificados em Python que nos permitem imaginar o quanto essa linguagem é poderosa:
Veja estes aplicativos no infográfico abaixo:
Quando pensamos no desenvolvimento de tais aplicações (web e mobile) temos que entender, por exemplo, a arquitetura por trás delas.
A construção de um serviço completo tem que contemplar dois grandes pilares:
Desenvolvimento web e mobile
No desenvolvimento web e mobile, chamamos de front-end a parte responsável por aspectos visíveis e interativos de uma página web, da parte de quem o acessa (cliente).
Para quem está acessando uma página, front-end é tudo aquilo que se vê e se manipula, como recursos gráficos, elementos de uma interface e até mesmo parte da lógica de programação do site.
Lógica de Programação
A parte da lógica de programação que dará funcionalidades a um site ou app mobile vai ser definida pelo que chamamos de back-end.
Trata-se das funções dos bastidores de uma aplicação web, a infraestrutura por trás do que está visível para as pessoas usuárias.
Por isso, envolve também um pouco mais de abstração.
Importante
Tanto o back-end quanto o front-end estão envolvidos em um contexto maior, que é a parte de arquitetura de aplicações. Segundo a própria Red Hat (2020):
>>1.
Definimos como arquitetura as técnicas e os padrões usados para projetar e desenvolver uma aplicação. Ela fornece um roadmap e práticas recomendadas a serem seguidas durante esse desenvolvimento para que você tenha uma aplicação bem-estruturada.
>>2.
Os padrões de design de software ajudam no desenvolvimento de uma aplicação. Eles descrevem uma solução reproduzível para um problema.
>>3.
Os padrões podem ser vinculados para criar arquiteturas de aplicação mais genéricas. Em vez de criar a arquitetura do zero, você pode usar padrões de design existentes, garantindo que tudo funcione da maneira correta.
>>4.
Os serviços de front-end e back-end fazem parte da arquitetura da aplicação. O desenvolvimento de front-end tem como foco a experiência do usuário da aplicação, já o de back-end se concentra em fornecer acesso aos dados, serviços e outros sistemas existentes responsáveis pelo funcionamento dela.
>>5.
A arquitetura é o ponto de partida ou o roadmap para desenvolver uma aplicação. No entanto, você precisa escolher determinados aspectos de implementação não definidos em uma arquitetura. Por exemplo, como uma etapa inicial, escolha a linguagem de programação para escrever a aplicação.
>>6.
Há muitas linguagens de programação usadas no desenvolvimento de softwares. Algumas delas são utilizadas na criação de determinados tipos de aplicações, como o Swift para aplicações mobile ou o JavaScript para desenvolvimento de front-end.
>>7.
Atualmente, o uso do JavaScript com HTML e CSS é uma das linguagens de programação mais populares para desenvolvimento de aplicação web.
>>8.
Outras linguagens de programação conhecidas incluem o Ruby, Python, TypeScript, Java, PHP, SQL, entre outras. A opção mais apropriada para você depende do tipo da aplicação, dos recursos de desenvolvimento disponíveis e dos requisitos.
>>9.
Tradicionalmente, as aplicações eram escritas como uma unidade de código em que todos os componentes tinham os mesmos recursos e espaço de memória. Esse tipo de arquitetura é conhecido como um monólito.
>>10.
Já as arquiteturas modernas de aplicação costumam ser mais levemente acopladas. Elas usam microsserviços e interfaces de programação de aplicações (APIs) para conectar serviços, oferecendo a base para as aplicações nativas em nuvem.
>>11.
Com o desenvolvimento nativo em nuvem, você acelera a criação de novas aplicações, otimiza as existentes e oferece uma experiência de gerenciamento automatizada e desenvolvimento consistente em nuvens privadas, públicas e híbridas.
Agora que finalizamos o primeiro módulo, que tal testar seus conhecimentos com um Quiz?
Pronto para começar?
Eles apresentam formas, tamanhos e funções distintas. Por exemplo: alguns desses atalhos podem preencher a tela inicial, enquanto outros ocupam menos espaço; uns têm tamanho ajustável, em que é possível personalizar a quantidade de informações exibidas sobre determinado atalho.
A que ferramenta o trecho acima se refere?
Widget (esta)
Aplicação
API
Python
JavaScript
Está correto. São os widgets que possuem estas características.
A _________ é o ponto de partida ou o roadmap para desenvolver uma aplicação. No entanto, você precisa escolher determinados aspectos de implementação não definidos em uma arquitetura. Por exemplo, como uma etapa inicial, escolha a linguagem de programação para escrever a aplicação.
Qual é a palavra que preenche a lacuna corretamente, levando em conta um ponto de partida fundamental em uma aplicação?
AP
Infraestrutura
Arquitetura(certa)
Linguagem de programação
Inteligência artificial
Está correto. A arquitetura é o ponto de partida fundamental em uma aplicação.
Módulo 2 Orientação a objetos e sua importância na construção das aplicações
Recapitulando…
No módulo anterior, você aprendeu sobre Widgets e Aplicativos.
Viu as diferentes possibilidades de Python em Mobile e Desktop, assim como a importância da arquitetura para desenvolver uma aplicação.
Agora, você aprenderá um pouco mais sobre classes e métodos, encapsulamento de códigos, criação de bibliotecas e desenvolvimento de aplicações.
Bons estudos!
Classes e Métodos
O Python é uma linguagem de Programação Orientada a Objetos.
Ao contrário da programação orientada a procedimentos, em que a ênfase principal está nas funções, a programação orientada a objetos enfatiza os objetos.
Objeto
Um objeto é simplesmente uma coleção de dados (variáveis) e métodos (funções) que atuam sobre esses dados.
Classe
Uma classe é um modelo para o objeto.
Pense em uma classe como um esboço (protótipo) de uma casa. Ele contém todos os detalhes sobre os pisos, portas, janelas etc. Com base nessas descrições, podemos construir a casa. Nesse exemplo a casa é o objeto.
Como muitas casas podem ser feitas a partir de uma planta, também é possível criar muitos objetos de uma classe. Um objeto também é chamado de instância de uma classe, e o processo de criação desse objeto é chamado de instanciação.
Importante
Assim como as definições de função começam com a palavra-chave def em Python, as definições de classe começam com uma palavra-chave class.
A primeira string dentro da classe é chamada docstring e tem uma breve descrição da classe.
Embora não seja obrigatório, isso é altamente recomendado.
Observe uma definição de classe simples:
class MinhaNovaClasse:
“Isto é uma docstring. Eu a criei dentro de minha nova classe”
pass
Veja que uma classe cria um namespace, local onde todos os seus atributos são definidos. Os atributos podem ser dados ou funções. Há também atributos especiais que começam com sublinhados duplos: __.
Por exemplo, __doc__ que nos dá a docstring dessa classe.
Assim que é definida uma classe, um novo objeto de classe é criado com o mesmo nome. Esse objeto nos permite acessar os diferentes atributos, bem como instanciar novos objetos dessa classe. Observe no código em outra linha.
Você viu que o objeto de classe pode ser usado para acessar diferentes atributos. Ele também pode ser usado para criar novas instâncias de objetos (instanciação) dessa classe.
O procedimento para criar um objeto é semelhante a função. Veja como é simples.
matheus = Pessoa()
Isso criará uma nova instância de objeto chamada “matheus”. Podendo acessar os atributos dos objetos usando o prefixo dos seus nomes.
Os atributos podem ser dados ou métodos. Os métodos de um objeto são funções correspondentes dessa classe. Isso significa dizer que, como Pessoa.saudacao é um objeto de função (atributo de classe), Pessoa.saudacao será um objeto de método. Veja sua aplicação no código!
Você deve ter notado o parâmetro self na definição da função dentro da classe, mas chamamos o método simplesmente como se matheus.saudacao() não tivesse nenhum argumento, e ainda funciona.
Isso ocorre porque sempre que um objeto chama seu método, o próprio objeto é passado como o primeiro argumento. Então, matheus.saudacao() se traduz em Pessoa.saudacao(matheus).
Importante
Em geral, chamar um método com uma lista de n argumentos equivale a chamar a função correspondente com uma lista de argumentos criada pela inserção do objeto do método antes do primeiro argumento.
Por esses motivos, o primeiro argumento da função na classe deve ser o próprio objeto. Isso é convencionalmente chamado self. Ele pode ser nomeado de outra forma, mas é altamente recomendável seguir a convenção.
As funções de classe que começam com sublinhado duplo (__) são chamadas de construtores, pois têm um significado especial.
Há um interesse particular na função __init__(). Esse construtor é chamado sempre que um novo objeto dessa classe é instanciado.
Em Programação Orientada a Objetos (POO), normalmente é utilizado para inicializar todas as variáveis.
Observe no código abaixo como são utilizados esses comandos:
Perceba que as variáveis bola1 e bola2 são objetos criados com base na classe Esfera, e que logo que os objetos são criados, o método construtor (__init__) é invocado e atribui cor e raio.
Também é possível notar que temos os métodos: área( ) e volume( ), com cálculos matemáticos envolvendo o raio da esfera, e que acessam pelo parâmetro self o atributo necessário.
Ao final, os dois últimos prints representam a mesma chamada do método volume( ), já que podemos tanto chamar o método por meio do objeto, quanto passar o objeto como parâmetro dentro do método da classe Esfera.
A seguir, você aprenderá como encapsular códigos e criar bibliotecas. Confira!
Encapsulando códigos e criando bibliotecas
A Programação Orientada a Objetos nos permite criar as classes e suas características para que, dentro de um arquivo Python, possamos guardar funcionalidades que podem ser reaproveitadas para diferentes projetos e finalidades.
Ou seja, é possível criar funcionalidades dentro de um arquivo .py, que mais tarde pode ser importado em outros arquivos.
Por exemplo, você precisa criar uma classe chamada Televisor, cujos os atributos são:
Para isso, é preciso criar métodos para aumentar/diminuir volume, trocar e sintonizar um novo canal, adicionando um novo canal à lista (somente se esse canal não estiver nessa lista). No atributo lista de canais, devem estar armazenados todos os canais já sintonizados dessa TV.
Para esse desafio, temos a seguinte possibilidade de solução, observe:
A partir disso, foi dada mais uma missão: criar uma classe ControleRemoto, cujo atributo é televisão (isto é, recebe um objeto da classe Televisor). Neste caso, você deve criar métodos para aumentar/diminuir volume, trocar e sintonizar um novo canal, que adiciona um novo canal à lista de canais (somente se esse canal não estiver nessa lista).
Veja como esse desafio pode ser resolvido: Parei aqui 28/06/24 continuar
Dado esse problema, imagine agora que, além de criar essa funcionalidade, o projeto precisa ser feito de tal maneira que os testes dessas funcionalidades sejam feitos em um arquivo .py à parte do arquivo das funcionalidades.
Como fazer para testar essas funcionalidades em um arquivo à parte?
A resposta é bem simples: basta criar dois arquivos .py na mesma pasta de trabalho: o primeiro vai conter o código acima, e o segundo vai importar as classes criadas.
Supondo que o primeiro arquivo se chame: funcionalidades.py, o segundo arquivo (que pode se chamar: teste.py) vai importar as funcionalidades do seguinte modo:
Veja que bastou importar tudo dentro de “funcionalidades”, ou seja, o arquivo .py se tornou, de certa forma, uma biblioteca em que você pode acessar comandos, deixando os testes mais fáceis de serem feitos e com menos riscos de prejudicar o arquivo base.
Lembre-se que essa é uma maneira de manter as boas práticas de programação.
Que tal mais um exemplo?
Foi solicitado à você uma classe Funcionário, cujos atributos são: nome e e-mail. Deve-se guardar as horas trabalhadas em um dicionário, cujas chaves são o mês em questão e, em outro dicionário, guardar o salário por hora relativo ao mês em questão.
Além disso, precisamos de um método que retorna o salário mensal do funcionário. A proposta é que sejam separados em dois arquivos:
um chamado funcionario.py, em que será criada a classe com suas funcionalidades.
um segundo chamado teste_funcionario.py, em que você deve aplicar testes e verificar a legitimidade do código anterior.
Para resolver essa questão, é necessário criar uma pasta no computador contendo os dois arquivos, sendo que o conteúdo do primeiro arquivo será conforme apresentado no código a seguir:
classFuncionario:
Parei aqui Continuei dia 02/07/24
É possível notar que os dicionários contendo as informações de horas e salário devem ser inicialmente vazios e criados dentro do método construtor da classe.
Já no segundo arquivo deve conter o seguinte código:
Para entender melhor essa linha de raciocínio, vamos para mais um desafio: imagine que você foi designado para criar um sistema que recebe dimensões de pisos de uma casa e dimensões de azulejos que vão cobrir os pisos.
Sua missão é mostrar a quantidade de azulejos necessária com base na área do piso e do azulejo escolhido. É evidente que os testes das funcionalidades devem estar em um arquivo à parte.
Uma maneira de resolver o problema é criar as funcionalidades pensando em retângulos, já que azulejos e os pisos normalmente são quadriláteros.
Logo, o arquivo de funcionalidades chamado de area.py ficará da seguinte forma:
Em seguida, é possível fazer um teste simples, com um looping que manterá a janela do executável .py aberta para você testar indefinidamente, observe:
Veja que o resultado apresentado é: A quantidade exata de azulejos para preencher o piso é 4.0.
Nesse caso, foi abordado o conceito de calcular a quantidade exata de pisos, ou até mesmo a quantidade mínima, caso o valor seja um número que possua casas decimais (a função math.ceil( ) arredonda o número para cima).
Acompanhe, agora, a criação de uma pequena aplicação em Python. Veja a seguir!
Criando uma pequena aplicação em Python
A maneira mais simples de criar uma aplicação em Python é criar um arquivo .exe ou um .py que execute um código, com o qual o usuário possa interagir ou até mesmo acompanhar um evento na tela de seu computador.
Imagine que você foi designado para uma tarefa onde precise criar um arquivo chamado cronometro.py que, ao ser clicado duas vezes, abre uma janela do executável Python e mostra um cronômetro que vai contabilizando segundos, minutos e horas.
Provavelmente você deve estar se perguntando: Por que isso seria uma espécie de aplicação, já que não possui nenhuma interface gráfica bacana e nem botões?
A resposta está no fato de ser a maneira mais primitiva de criar uma aplicação, que servirá de base para bibliotecas gráficas.
Observe no código abaixo, como resolver esse desafio:
Após ver todos esses conceitos, é importante que você entenda como a orientação a objetos tem relação com o desenvolvimento de aplicações. Confira!
Orientação a objetos e sua relação com o desenvolvimento de aplicações
A Programação Orientada a Objetos é bem requisitada no contexto das aplicações mais atuais, que o mercado demanda.
Entre os motivos dessa preferência, estão a possibilidade de reutilização de código e a capacidade de representação do sistema ser muito mais próxima do que vivenciamos no mundo real.
O próprio site da Digitalhouse.com (2020) coloca da seguinte maneira:
>>1.
A programação orientada a objetos propõe uma representação mais fácil de ser compreendida, pois a relação de cada elemento em termos de um objeto, ou classe, pode ser comparado ao mundo real.
>>2.
Outro benefício da POO é a reutilização de código. Com a complexidade dos sistemas cada vez mais ampla, o tempo de desenvolvimento iria aumentar absurdamente, caso não fosse possível a reutilização.
>>3.
Essa funcionalidade é possível, pois a POO traz representações muito claras de cada um dos elementos que, normalmente, não são interdependentes. E dessa independência entre as partes do software é que esse código poderá ser reutilizado em outros sistemas no futuro.
>>4.
Por fim, outra grande vantagem fica por conta da leitura e manutenção de código. Como sua representação do sistema se aproxima da vivência cotidiana, o entendimento do sistema como um todo é simplificado. Isso dá liberdade à equipe de desenvolvimento, não ficando dependente de uma só pessoa, como em alguns casos de linguagem estruturada.
>>5.
Com ela, há também a possibilidade da criação de bibliotecas, com representações de classes, o que torna mais clara a reutilização de códigos.
>>6.
Afinal, como uma das responsabilidades do desenvolvedor é entender quais são as vantagens e desvantagens de cada um dos paradigmas de programação e, assim, escolher o que há de melhor para a aplicação do cliente, a escolha da linguagem pesa muito na experiência final do usuário.
É evidente perceber que a Programação Orientada a Objetos é o coração da construção de aplicações claras e seguras, que tornam o desenvolvimento mais saudável possível.
Quiz
Assinale a alternativa que apresenta as funcionalidades de uma classe.
Métodos e atributos
Como é chamado o método _init_( ) dentro de uma classe?
Construtor
Referências
PHILLIPS, D Creating Apps in Kivy: Califórnia, 2014
O QUE. é programação orientada a objetos? Pilares e vantagens da POO. Digital House, 24 jul. 2020. Disponível em: https://www.digitalhouse.com/br Acesso em: 06 set. 2022.
No módulo anterior, você aprendeu sobre Classes e Métodos.
Viu como criar uma pequena aplicação em Python e estudou sobre a relação da Orientação a objetos com o desenvolvimento de aplicações.
Neste último módulo, você irá conhecer a biblioteca Kivy e seus benefícios para criação de aplicativos móveis.
Bons estudos!
Introdução
A partir de agora, você vai conhecer com o que os desenvolvedores estão se dedicando atualmente, é muito provável que eles estejam trabalhando em um aplicativo móvel ou web.
Para esse desenvolvimento, o Python não possui recursos integrados de desenvolvimento móvel, mas existem pacotes que você pode usar para criar aplicativos móveis.
Dois exemplos desses pacotes são:
Kivy & PyQt
Essas bibliotecas abrangem todos os principais players no espaço móvel do Python. No entanto, você pode ter alguns benefícios se optar por criar aplicativos móveis com o Kivy.
Seu aplicativo não terá apenas a mesma aparência em todas as plataformas, mas você também não precisará compilar seu código após cada alteração.
Além disso, poderá usar a sintaxe clara do Python para criar seus aplicativos.
Antes de entender melhor sobre o pacote Kivy, veja a seguir, a diferença entre Kivy e PyQt:
Agora sim! Vamos continuar?
A biblioteca Kivy
Importante
Essa estrutura Python multiplataforma pode ser implantada em Windows, Mac, Linux e Raspberry Pi.
O Kivy suporta eventos multitoque, além de entradas regulares de teclado e mouse.
Ele ainda suporta a aceleração de GPU de seus gráficos, já que eles são construídos usando OpenGL ES2. O projeto usa a licença do MIT, então você pode usar esta biblioteca para software livre e comercial.
Ao criar um aplicativo com Kivy, você está criando uma interface de usuário natural ou NUI.
Curiosidade
A ideia por trás de uma interface de Usuário Natural é que ele possa aprender facilmente como usar seu software com pouca ou nenhuma instrução.
O Kivy não tenta usar controles ou widgets nativos.
Todos os seus widgets são personalizados. Isso significa que os aplicativos Kivy terão a mesma aparência em todas as plataformas. No entanto, isso também significa que a aparência do seu aplicativo será diferente dos aplicativos nativos do seu usuário.
Isso pode ser um benefício ou uma desvantagem, dependendo do seu público.
O Kivy tem muitas dependências, portanto, é recomendável instalá-lo em um ambiente virtual Python (venv).
Você pode usar a biblioteca interna do Python ou o pacote “virtualenv”.
Observe abaixo, como deve executar o virtualenv via linha de comando:
python3 -m venv kivy_project
Ele copiará seu executável do Python 3 em uma pasta chamada my_kivy_projecte e adicionará algumas outras subpastas a esse diretório.
Para usar seu ambiente virtual, é necessário ativá-lo. No Mac e no Linux, você pode fazer isso executando o seguinte comando dentro da pasta kivy_project:
source bin/activate
O comando para Windows é semelhante, mas o local do script de ativação está dentro da pasta Scripts, em vez de bin.
Agora que você tem um ambiente virtual Python ativado, pode executar pip para instalar o Kivy. No Linux e no Mac, para isso execute o seguinte comando:
python -m pip install kivy
Siga adiante para começar a escrever as primeiras linhas de código Kivy. Confira!
Escrevendo as primeiras linhas de código Kivy
Vamos fazer algo bem simples! Chegou o momento de reproduzirmos a tela abaixo:
Para isto, veja com o Kivy funciona, escreva o código:
Ambos podem estar em qualquer lugar entre 0 e 1.
O valor padrão para ambas as dicas é 1.
Você também pode usar pos_hint para posicionar o widget. No código apresentado acima, você diz ao Kivy para centralizar o widget nos eixos x e y.
Para fazer o aplicativo rodar, você instancia sua classe MainApp e, então, chama a função run().
Gostou do resultado?
Agora vamos passar para outro desafio!
Que tal inserirmos a imagem da tela abaixo?
O Kivy tem alguns widgets relacionados a imagens diferentes, para escolher. Você pode usar Image para carregar imagens locais do seu disco rígido ou AsyncImage para carregar uma imagem de uma URL.
Para este exemplo, vamos testar trazendo uma imagem via URL, escreva:
Esperamos que você tenha tido uma excelente experiência ao inserir a imagem.
Você pode repetir este procedimento com outras imagens para treinar seus conhecimentos!
Para isso, acesse os links abaixo, para obter outras imagens via URL. Desta forma você poderá fazer estas inserções repetindo o mesmo código.
Cada estrutura de GUI que você usa, tem seu próprio método de organização de widgets. Por exemplo, o wxPython usará dimensionadores, enquanto o Tkinter você usará um gerenciador de layout ou geometria.
Com Kivy, você usará layouts.
Existem vários tipos diferentes delayouts que se pode usar.
Aqui estão alguns dos mais comuns:
Lembre-se! Você pode pesquisar a documentação do Kivy para obter uma lista completa de layouts disponíveis. E também pode procurar dentro de “kivy.uix” o código-fonte real.
Para finalizar esta etapa de experimentação, vamos criar este layout com diferentes cores.
Escreva o seguinte código:
Gostou do resultado?
Agora vamos continuar estudando sobre layouts.
É importante que você saiba que existem cinco botões de cores aleatórias, um para cada iteração do seu loop.
Ao criar um layout, há alguns argumentos que você deve conhecer:
PADDING
Você pode especificar os padding pixels entre o layout e seus filhos.
SPACING
Você pode adicionar espaço entre os widgets filhos com este argumento.
Orientation
Você pode alterar o padrão orientation de BoxLayouthorizontal para vertical.
Saiba Mais
No caso dos padding pixels, você pode especificá-los entre o layout e seus filhos de três maneiras:
uma lista de quatro argumentos: [padding_left, padding_top, padding_right, padding_bottom].
uma lista de dois argumentos: [padding_horizontal, padding_vertical].
um argumento singular: (padding=10).
Como a maioria dos kits de ferramentas GUI, o Kivy é principalmente baseado em eventos.
A estrutura responde a pressionamentos de:
O Kivytem o conceito de um relógio que você pode usar para agendar chamadas de função para algum tempo no futuro.
Ele também tem a função Properties, que funciona com o EventDispatcher.
As propriedades o ajudam a fazer a verificação de validação. Elas também permitem que você dispare eventos sempre que um widget mudar de tamanho ou posição.
O que acha de adicionar um evento de botão ao código visto anteriormente?
Veja como fazer isso no código abaixo:
O Kivy também fornece uma linguagem de design chamada KV, que você pode usar com seus aplicativos Kivy. A linguagem KV permite separar o design da interface e a lógica do aplicativo.
Isso segue o princípio da separação de interesses e faz parte do padrão de arquitetura Model-View-Controller.
Você pode atualizar o exemplo anterior para usar a linguagem KV. Confira!
Esse código pode parecer um pouco estranho à primeira vista, pois cria um Button sem definir nenhum de seus atributos ou vinculá-lo a nenhum evento.
O que está acontecendo aqui é que o Kivy procurará automaticamente um arquivo que tenha o mesmo nome da classe em letras minúsculas.
Nesse caso, o nome da classe é ButtonApp, então Kivy procurará um arquivo chamado button.kv. Se esse arquivo existir e estiver formatado corretamente, o Kivy o usará para carregar a interface do usuário.
Vá em frente, crie esse arquivo e digite o seguinte código:
Importante
A linguagem KV também suporta a importação de módulos Python em KV, a criação de classes dinâmicas e muito mais. Para detalhes completos, procure a documentação oficial do Kivy em https://kivy.org/doc/stable/.
Uma das melhores maneiras de aprender uma nova habilidade é criando algo útil.
Com isso em mente, você usará o Kivy para construir uma calculadora que suporte as seguintes operações:
Para essa aplicação, precisará de uma série de botões em algum tipo de layout. E também precisará de uma caixa na parte superior do aplicativo para exibir as equações e seus resultados.
Agora que você tem uma meta para a interface do usuário, siga em frente e digite o código abaixo:
Mais uma vez, você pega o texto atual solution e usa o built-in eval() do Python para executá-lo.
Se o usuário criou uma fórmula como 2+2, então eval() executará seu código e retornará o resultado. Por fim, você define o resultado como o novo valor para o widget solution.
Continue seus estudos e veja como criar sua primeira aplicação. Confira!
Criando sua primeira aplicação
Agora, dando um passo adiante, você construirá um código mais robusto, que dependerá de mais de um arquivo.
A ideia aqui será criar uma tela de login que valide se um usuário existe ou não.
Além disso, caso o usuário não possua conta e queira criá-la, isso também será possível.
Parei aqui Comecei aqui 15/07/2024
Juntando seus conhecimentos de POO e bibliotecaKivy , é possível separar sua aplicação em quatro arquivos:
main.py
Este arquivo receberá a estrutura lógica das ações de sua aplicação.
database.py
Este arquivo será responsável pela criação e armazenamento de usuários.
users.txt
Será o arquivo de cadastro dos seus usuários e onde o arquivo principal consultará para validar os mesmos.
mk.kv
Será um arquivo kivy que receberá a parte do layout dos botões e algumas ações dos mesmos.
Chegou o momento de criar sua primeira aplicação, ao final do desafio você verá uma tela de login semelhante a esta:
Parei aqui 15/07/24 verificar todo caminho até aqui…
Veja como fica o arquivo database.py:
Quiz
Chegou o momento de responder ao Quiz!
Você fará alguns exercícios para testar os conhecimentos obtidos no terceiro módulo do curso Criando um Projeto com Interface Gráfica.
Leia atentamente as questões, escolha a alternativa correta e clique no botão Confirmar, para obter o feedback, antes de avançar para a próxima questão.
Boa sorte!
Qual é o nome da classe que importamos do Kivy e a função que ditará a construção da aplicação?
App e construtor().
App e build(). (ESTA É A RESPOSTA)
MyClass e build().
Image e Asynclmage().
Asyclmage e Build().
Sabemos que arquivos .kv são importantes para a construção de aplicações Kivy em geral, porém em que momento esses arquivos nos ajudam mais?
Apenas para acelerar a execução do código.
Para facilitar a vida de quem vai executar a aplicação.
Para fazer poo por lá.
Para criar widgets mais robustos.
Para deixarmos o código principal apenas para a criação dos widgets e o arquivo .kv guardando seus parâmetros e funcionalidades.(ESTA ESTÁ CORRETA)
Você chegou ao final do curso Criando um Projeto com Interface Gráfica!
Esperamos que você tenha gostado de todo o conteúdo abordado e possa colocar em prática os conhecimentos adquiridos.
Existem muitos widgets e conceitos sobre o Kivy, então não deixe de conferir o site oficial (https://kivy.org/doc/stable/) para ver os tutoriais, aplicativos de amostra e muito mais.
Parabéns!
Você concluiu este curso!
Chegou o momento de responder a avaliação final. Ao obter 70% de acertos, você terá acesso ao certificado de conclusão do curso. Vamos lá?
Vemos você em breve, em outros cursos da Escola Virtual.