terça-feira, 13 de novembro de 2012

Kivy: Criando o Hello World



O Kivy é uma biblioteca do Python para desenvolvimento de aplicativos móveis, é multi-plataforma e possui código aberto [...].

Neste post nós conheceremos a estrutura básica para desenvolvimento de uma aplicação utilizando o Kivy e como resultado, criaremos o famoso "Hello World".

Como pré-requisito básico é necessário que você já tenha feito o download do Kivy. Se ainda não o fez, então é só seguir as instruções do link de Instalação do Kivy para desenvolvedores no Windows. Este link também traz as informações necessárias para executar uma aplicação feita para o Kivy.

Abaixo, você tem a codificação inicial necessária para uma aplicação utilizando o Kivy:



O código descrito acima deve ser criado e salvo com a extenção .py. Cuidado também com a correta identação.O link descrito acima traz instruções para instalação e execução dos arquivos .py.



Linha 3: O import kivy como já sugerido pelo comando, simplesmente importa a biblioteca do repositório do Kivy.

Linha 4: É com o kivy.require que você espécifica a versão mínima necessária para funcionamento da sua aplicação. Se a versão do kivy onde sua aplicação for executada não atender ao requisito, então a execução do aplicativo resultará em uma exception.

Linhas 6 e 7: Os from kivy's...import[...] fazem a importação das classes necessárias para a sua aplicação. Observe que as classes estão sendo importadas de forma explicita, o que resulta em mais trabalho na codificação, mas isso traz consideravelmente uma melhor performance na execução do programa, além de trazer mais clareza aos módulos que estão sendo utilizados na aplicação. Aqui poderíamos simplesmente importar as classes de uma vez só da seguinte maneira: from kivy import *. Mas, a importação de classes desta maneira torna a inicialização da aplicação consideravelmente mais lenta e desta forma, também não saberemos que classes estão sendo realmente utilizadas. Outra desvantagem neste modo de importação é que também causa problemas com os "namespace" ("identificadores" em uma tradução livre).

Linha 9: class MyApp[...] é uma derivação da classe App() do repositório kivy.app. A classe App() é a classe chave para criação de uma aplicação com o kivy, funciona como um ponto para o ciclo de execução do kivy. Aqui você está tornando a sua classe (MyApp) em uma sub-classe de App no momento em que a mesma (classe App) é instanciada.

Linhas 10 e 11. O método build(self) na linha 10, inicializa a aplicação.O parâmetro self faz referência a classe que o chamou (MyApp). Este método não precisa ser chamado explicitamente, pois o método App().run() já faz isso automaticamente. Quando o build() é executado pela classe instânciada de App(), ele retorna para que seja mostrado na tela o widget originado pela classe Button() na linha 11, que neste caso, é apenas o label "Hello World".

Linha 13. Aqui é feito um teste lógico, com o atributo __name__, para saber como o aplicativo/script foi chamado. Se chamado a partir de um prompt de comando ou clique carregará a instrução "__main__". Caso contrário, se estiver sendo importado será setado o nome do modulo importado.

Linha 14. Com o método MyApp().run(), você está chamando a sua classe MyApp, que é uma instância de App, para que seja executada.

Agora é só executar o arquivo e teremos o Hello World feito com a biblioteca do Kivy. 




Siga o link Review the Basic Application's Code do blog Kivy Lab para informações sobre a codificação básica na criação de uma aplicação.

Dicas sobre importação de módulos e classes no Kivy >> 

4 comentários:

  1. Legal, mas como compila para o android? ele gera o apk para instalar? não achei onde explica isso.
    vlw

    ResponderExcluir
  2. Só acho que não deveriam colocar o código acima porque pode confundir os usuários mais leigos que estão se aventurando agora pelo mundo Python assim como eu, teriam que enfatizar a instalação dos pacotes Kivy porque somente com o Kivy o código não funciona, aí o sujeito vai entrar num loop infinito tentando fazer esse código funcionar.

    ResponderExcluir
  3. Para quem está com problemas para instalar o Kivy corretamente, eis a solução que foi retirada do site: https://stackoverflow.com/questions/44219563/kivy-not-working-error-unable-to-find-any-valuable-window-provider

    pip uninstall kivy
    pip install kivy
    pip install docutils pygments pypiwin32 kivy.deps.sdl2
    pip install kivy.deps.glew

    ResponderExcluir
  4. Estou recebendo esta msg qdo rodo o código.
    PS C:\Python> & C:/Users/Sonda/AppData/Local/Programs/Python/Python38-32/python.exe c:/Python/kivy.py
    Traceback (most recent call last):
    File "c:/Python/kivy.py", line 1, in
    import kivy
    File "c:\Python\kivy.py", line 2, in
    kivy.require('1.0.6')
    AttributeError: partially initialized module 'kivy' has no attribute 'require' (most likely due to a circular import)
    Em outra tentativa de inicializar o Kivy com outro código, recebi este erro:
    PS C:\Python> & C:/Users/Sonda/AppData/Local/Programs/Python/Python38-32/python.exe c:/Python/kivy.py
    Traceback (most recent call last):
    File "c:/Python/kivy.py", line 1, in
    import kivy
    File "c:\Python\kivy.py", line 2, in
    from kivy.app import App
    ModuleNotFoundError: No module named 'kivy.app'; 'kivy' is not a package
    Alguma idéia?

    ResponderExcluir