Vánoční nadílka Vánoční nadílka
Vánoční akce! Daruj lepší budoucnost blízkým nebo sobě. Až +50 % zdarma na dárkové poukazy. Více informací

Lekce 1 - Představení Kivy frameworku a tvorba prvních aplikací

Python Kivy Představení Kivy frameworku a tvorba prvních aplikací

Unicorn College ONEbit hosting Tento obsah je dostupný zdarma v rámci projektu IT lidem. Vydávání, hosting a aktualizace umožňují jeho sponzoři.

Vítejte u první lekce kurzu, ve kterém se naučíme vytvářet aplikace v Kivy frameworku pro Python. Cílem tohoto kurzu je naučit se vytvářet aplikace/hry pro mobilní zařízení, konkrétně (nejen) pro Android v Kivy frameworku.

Kivy framework

Co je vlastně Kivy? Kivy je framework pro programovací jazyk Python, který nám umožňuje vytvářet aplikace pro Windows, Mac OS, Linux, Android a iOS. To je spousta zařízení, která mohou spustit naši aplikaci, a ještě lepší je to, že Kivy podporuje multi-touch. Je tedy ideální pro tvorbu her a aplikací na dotyková zařízení. Na rozdíl např. od PyQt Kivy není nějaký obal pro GUI toolkit, Kivy framework je napsaný v Pythonu, proto pro svou funkčnost potřebuje Cython (a doporučuji i PyGame).

Nevýhodou Kivy je vzhled, jelikož není nativní a ani se jako nativní nesnaží vypadat. Poté, co v Kivy frameworku budete dělat nějaký ten pátek, budete možná schopni vytvořit aplikaci, která bude vypadat jako některá z tohoto seznamu.

Kivy má také svůj jazyk pro návrh formuláře/GUI, funguje podobně jako CSS pro web.

Počítám s tím, že znáte základy OOP v Pythonu a máte nainstalovaný Python 3.6+.

Instalace

Pokud Python nemáte z nějakého důvodu nainstalovaný, doporučuji distribuci MiniConda.

Jak jsem zmínil, Kivy framework potřebuje pro svou funkčnost balíčky PyGame a Cython, které nainstalujeme jako první. Dále je potřeba nainstalovat Pillow. Následující příkazy spustíme v příkazovém řádku. Pokud používáte distribuci Anaconda/MiniConda na Windows, použijte Anaconda Prompt.

py -m pip install cython
py -m pip install pygame
py -m pip install Pillow

Poté nainstalujeme samotný Kivy framework:

py -m pip install kivy

V příkazovém řádku byste měli vidět výstup podobný tomuto:

Instalace Kivy frameworku pro Python na Windows

Nyní jsme připraveni a vrhneme se na tvorbu naší úvodní aplikace.

Tvorba první aplikace

Vytvořte si nový Python projekt. Nejprve si importujeme samotný Kivy framework, dále nastavíme požadovanou verzi a importujeme tlačítko s třídou App. Právě tlačítko se zdravícím textem v této aplikaci uživateli vykreslíme.

#Importujeme Kivy
import kivy
#Minimální potřebná verze pro spuštění
kivy.require("1.10.1")
#Importujeme Tlačítko
from kivy.uix.button import Button
#Importujeme Aplikaci
from kivy.app import App

Vytvoříme si třídu MainApp, která bude dědit z třídy App a bude vracet importované tlačítko s naším textem.

#Vytvoříme třídu aplikace
class MainApp(App):
    #Metoda, která vrátí tlačítko, které se má zobrazit
    def build(self):
        return Button(text = "Zdraví tě tlačítko z Kivy")

Aplikaci následně stačí jen instanciovat a spustit:

#Spuštění
app = MainApp()
app.run()

Po spuštění, které můžete provést např. v příkazovém řádku příkazem py soubor.py, bude aplikace vypadat následovně:

Hello world aplikace v Kivy frameworku pro Python

Tlačítko se roztáhlo přes celý formulář, což je jeho výchozí chování.

Aplikace Kalkulačka

Jelikož vytvářet Python aplikace je poměrně jednoduché, stihneme během dnešní lekce vytvořit i druhou ukázkovou aplikaci - jednoduchou kalkulačku. Ta bude umožňovat provádět následující matematické operace:

  • součet
  • rozdíl
  • součin
  • podíl

Použijeme následující ovládací prvky:

  • TextInput - textové pole pro zadání textu od uživatele, v našem případě čísel
  • Spinner - nabídka pro výběr matematické operace, funguje podobně jako combobox, tedy jako rozbalovací nabídka
  • Label - popisek pro výpis výsledku
  • Button - tlačítko pro zavolání metody, která provede výpočet

Formulář aplikace kalkulačka bude mít následující rozložení:

Vidíme, že zde již potřebujeme ovládací prvky alespoň minimálně seskupit a to do dvou řad. K seskupování prvků používáme tzv. layouty, česky rozložení. Možná je znáte z již zmíněného PyQt kurzu nebo z jiných programovacích jazyků, fungují všude velmi podobně.

V našem případě použijeme na ovládací prvky v první řadě BoxLayout, který nám je seskupí vedle sebe. Obě řady prvků následně seskupíme pod sebe dalším BoxLayoutem, který obalí celou naší aplikaci. Ten bude mít na rozdíl od toho prvního nastavenou orientaci na svislou.

Na veškeré ovládací prvky v Kivy budeme dále referovat jako na widgety.

Tvorba aplikace

Nejdříve si naimportujeme Kivy a nastavíme požadovanou verzi. Poté naimportujeme samotné ovládací prvky, se kterými budeme pracovat, a samozřejmě i třídu App. Ta tvoří základ každé Kivy aplikace:

import kivy
kivy.require("1.10.1")
from kivy.uix.button import Button, Label
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.textinput import TextInput
from kivy.uix.spinner import Spinner

from kivy.app import App

Dále si vytvoříme třídu, která bude tentokrát dědit z BoxLayoutu, který bude vše držet pospolu. BoxLayout je layout, který přizpůsobí velikost widgetů, které obsahuje, velikosti okna, a seřadí je podle své orientace. V našem případě bude orientace vertikální, protože potřebujeme vložit dvě řady ovládacích prvků pod sebe:

class Kalkulacka_layout(BoxLayout):

    def __init__(self, *args, **kwargs):
        super(Kalkulacka_layout, self).__init__(*args, **kwargs)
        #Nastavíme orientaci Boxlayoutu směrem "dolů"
        self.orientation = "vertical"

Layouty můžeme vkládat i do sebe, čímž jako první svislý prvek v okně vložíme další BoxLayout, který bude tvořit vodorovnou řadu prvků.

Vytvoříme tedy nový BoxLayout, který bude obsahovat TextInput, Spinner a Label. Tento layout přidáme do našeho hlavního BoxLayoutu. V tomto případě bude orientace BoxLayoutu horizontální, tedy aby řadil widgety vedle sebe:

# pokračujeme v konstruktoru...
        #Vytvoříme obal pro text input, spinner a label s výsledkem
        widget = BoxLayout(orientation = "horizontal")
        self.cislo1_input = TextInput(multiline = False)
        self.combobox = Spinner(text = "+", values=("+", "-", "*", "/"))
        self.cislo2_input = TextInput(multiline = False)
        self.vysledek_label = Label(text = "0")
        widget.add_widget(self.cislo1_input)
        widget.add_widget(self.combobox)
        widget.add_widget(self.cislo2_input)
        widget.add_widget(self.vysledek_label)
        self.add_widget(widget)

Nakonec přidáme do okna tlačítko, které bude reagovat na kliknutí nebo dotek, záleží na jakém zařízení bude aplikace spuštěna:

    #Vytvoříme tlačítko, které bude volat metodu vypocitej()
    self.tlacitko = Button(text = "=", on_press = self.vypocitej)
    self.add_widget(self.tlacitko)

def vypocitej(self, *args):
    if self.cislo1_input.text == "" or self.cislo2_input.text == "":
        return False
    if self.combobox.text == "+":
        vys = float(self.cislo1_input.text) + float(self.cislo2_input.text)
    elif self.combobox.text == "-":
        vys = float(self.cislo1_input.text) - float(self.cislo2_input.text)
    elif self.combobox.text == "*":
        vys = float(self.cislo1_input.text) * float(self.cislo2_input.text)
    elif self.combobox.text == "/":
        if self.cislo2_input.text == "0":
            self.vysledek_label.text = "ERROR"
            return False
        vys = float(self.cislo1_input.text) / float(self.cislo2_input.text)
    self.vysledek_label.text = str(vys)

Abychom mohli aplikaci spustit, musíme vytvořit třídu MainApp, která dědí z App, a metodu build(), která bude vracet naši třídu. Ta dědí z BoxLayoutu a obsahuje naše vybrané widgety:

class MainApp(App):
    def build(self):
        return Kalkulacka_layout()

MainApp().run()

A máme hotovo. Pokud aplikaci spustíte příkazem py soubor.py, vyskočí na vás okno podobné obrázku níže:

Jednoduchá kalkulačka v Kivy frameworku pro Python

Zdrojový kód obou příkladů najdete ke stažení v příloze článku. V příští lekci, Kivy language a layouty, si představíme Kivy language, popíšeme si layouty, které Kivy framework nabízí, a řekneme si k čemu je každý z nich dobrý.


 

Stáhnout

Staženo 13x (2.19 kB)
Aplikace je včetně zdrojových kódů v jazyce Python

 

 

Článek pro vás napsal MQ .
Avatar
Jak se ti líbí článek?
1 hlasů
Autor je srdcem Pythonista.
Miniatura
Všechny články v sekci
Kivy framework pro Python
Miniatura
Následující článek
Kivy language a layouty
Aktivity (7)

 

 

Komentáře

Avatar
Šimon Adámek:20. listopadu 15:36

V článku je chyba:
vytváříš

self.cislo1_input_input = TextInput(multiline = False)

a ve funkci vypocitej mas

self.cislo1_input.text
 
Odpovědět 20. listopadu 15:36
Avatar
MQ .
Redaktor
Avatar
Odpovídá na Šimon Adámek
MQ .:20. listopadu 17:27

Ahoj, děkuji za zpětnou vazbu. Chybu v článku opravím :)

Odpovědět 20. listopadu 17:27
Programovácí jazyk zítřka bude vysokoúrovňový, bez ";", prostý a v neposlední řadě čitelný.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.