IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

3. diel - Dynamické pozíciovanie widgetov v Kivy

Zdravím vás u ďalšej lekcie Kivy frameworku pre Python. V lekcii minulej, Kivy language a layouty , sme si predstavili Kivy language a popísali layouty, ktoré Kivy obsahuje. V dnešnom Python tutoriále si ukážeme ako dynamicky pozicový widgety a tým si tiež upevníme znalosti z minulej lekcie, ktorá sa zameriavala na Kivy language.

Python

Vytvoríme si nový projekt a najskôr si importujete Kivy a nastavíme požadovanú verziu. Ďalej importujeme Widget, ktorý dnes použijeme namiesto layoutu a v ktorom si ukážeme názorný príklad. Prvky si totiž budeme pozicový tentoraz sami a layout by pre nás bol len na škodu. Nakoniec ako vždy si importujeme triedu App.

Zdrojový kód v Pythone je nasledujúci:

import kivy
kivy.require("1.10.1")
from kivy.uix.widget import Widget
from kivy.app import App

class MujWidget(Widget):
    pass

class MainApp(App):

    def build(self):
        return MujWidget()

MainApp().run()

Kivy

Pridajte si súbor .kv. Pre ukážku si do aplikácie pridáme a upravíme textový popis Label a nastavíme mu vlastnú veľkosť, veľkosť fontu a farbu, ktorá má 4 hodnoty RGBA (červená zložka, zelená zložka, modrá zložka, priehľadnosť). Toto nastavenie sa ďalej prejaví pre všetkých labely v aplikácii.

#:kivy 1.10.1

<Label>:
    size: 150, 50
    font_size: 32
    color: .5, .7, .3, 1

Druhou možnosťou je definovať si vlastné Label namiesto úpravy toho existujúceho. Pre tento spôsob by sme použili syntax <nazev@Label>:

<MujSuperLabel@Label>:
    size: 150, 50
    font_size: 32
    color: .5, .7, .3, 1

Všimnite si, že <> sa používa nielen pre úpravu nejakého miniaplikácie alebo layoutu, ale aj pre vytvorenie vlastného. Výhodou tohto postupu je samozrejme fakt, že máme v aplikácii možnosť použiť ako MujSuperLabel s upraveným štýlom, tak aj pôvodný Label.

Ďalej do .kv súboru pridáme definíciu formulára, do ktorého si vložíme dva labely. Ak používate vlastný label, napr. Onen MujSuperLabel, nahraďte Label: v kóde nižšie názvom vášho labelu:

<MujWidget>:
    Label:
        id: label1
        text: "Label1"
    Label:
        id: label2
        text: "Label2"

Všimnite si, že obaja labely sú na rovnakej pozícii, pretože sme im žiadnu pozíciu nenastavili a formulár nemá ani žiadny layout.

Kivy framework pre Python

Pozor, v Kivy frameworku sa pozicuje od spodného ľavého rohu!

Teraz umiestnime prvý Label do pravého horného rohu a druhý do pravého spodného rohu.

V Kivy language sa na Widget / Layout, v ktorom sa aktuálne Widget nachádza, odkazujeme pomocou root a pomocou self sami na seba. Obsah nášho .kv súboru upravíme na:

#:kivy 1.10.1

<Label>:
    size: 150, 50
    font_size: 32
    color: .5, .7, .3, 1

<MujWidget>:
    Label:
        id: label1
        text: "Label1"
        pos: root.width - self.width, root.top - self.height    --- musíme odečíst velikost Labelu jinak by se Label nacházel mimo okno
    Label:
        id: label2
        text: "Label2"
        pos: root.width - self.width, root.y

Keby sme neodpočítal veľkosť samotného Label u, nachádzal by sa mimo okno, pretože root.width je pravý okraj okna. Výsledné okno vyzerá nasledovne:

Absolútna pozíciovanie labelov v Kivy frameworku pre Python - Kivy framework pre Python

Import Python knižníc do Kivy language

Teraz si ukážeme, ako sa pracuje v .kv súboroch s Python knižnicou a zobrazíme v Label u číslo π (Pí) z knižnice math (nie je potrebné ju inštalovať).

Importujeme knižnicu math pomocou #:import math math. To je ekvivalent import math as math v Pythone. Číslo π samozrejme zaokrúhlime, pretože máme fixné šírku Label ua konštanta, ktorú knižnica obsahuje, by sa nám do Label u nezmestila:

#:kivy 1.10.1
#:import math math

<Label>:
    size: 150, 50
    font_size: 32
    color: .5, .7, .3, 1

<MujWidget>:

    Label:
        id: label1
        text: str(round(math.pi, 5))
        pos: root.width - self.width, root.top - self.height
    Label:
        id: label2
        text: "Label2"
        pos: root.width - self.width, root.y

V hornom Label u sa nám namiesto textu "Label1" zobrazí zaokrúhlená konštanta. Aplikácia po zmene vyzerá nasledovne:

Import knižníc do Kivy language v Pythone - Kivy framework pre Python

Zdrojový kód nájdete na stiahnutie v prílohe článku. Dúfam, že ste si utvrdili vedomosti ohľadom Kivy language. V budúcej lekcii, Reakcia na kliknutie / dotyk a aplikácie Maľovanie v Kivy , si povieme o reakciu na kliknutie / dotyk a pohyb myši / prsta. Tiež si vytvoríme jednoduchú aplikáciu Maľovanie.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 52x (532 B)
Aplikácia je vrátane zdrojových kódov v jazyku Python

 

Predchádzajúci článok
Kivy language a layouty
Všetky články v sekcii
Kivy framework pre Python
Preskočiť článok
(neodporúčame)
Reakcia na kliknutie / dotyk a aplikácie Maľovanie v Kivy
Článok pre vás napísal MQ .
Avatar
Užívateľské hodnotenie:
1 hlasov
Používám hlavně Python a zajímám se o Deep Learning a vše kolem.
Aktivity