Skip to content

Vytvářejte jednoduché grafické uživatelské rozhraní s Raspberry Pi pomocí EasyGUI

16 de Červen de 2021
main 57eaed3c5f9b586c35468ec1

Přidání grafického uživatelského rozhraní (GUI) do vašeho projektu Raspberry Pi je skvělý způsob, jak zahrnout obrazovku pro zadávání dat, tlačítka na obrazovce pro ovládací prvky nebo chytřejší způsob, jak zobrazit hodnoty z komponent, jako jsou senzory. Tento článek používá standardní operační systém Raspbian.

Vytvořte rozhraní pro svůj projekt

Pro Raspberry Pi je k dispozici několik metod grafického uživatelského rozhraní. Většina z nich však má strmou křivku učení. Rozhraní Tkinter Python může být pro většinu výchozím nastavením, ale začátečníci se mohou potýkat s jeho složitostí. Podobně knihovna PyGame nabízí možnosti vytváření působivých rozhraní, ale může být nadměrná požadavkům. Pokud hledáte rychlé a přímočaré rozhraní pro váš projekt, může být řešením EasyGUI. Co mu chybí v grafické kráse, to více než vynahradí jeho jednoduchost a snadné použití.

Tento článek poskytuje úvod do knihovny, včetně některých nejužitečnějších možností, které jsme našli.

Stáhněte a importujte EasyGUI

Instalace knihovny bude známá, pokud jste použili metodu instalace apt-get. Na svém Raspberry Pi potřebujete připojení k internetu, a to pomocí kabelového připojení Ethernet nebo Wi-Fi. Tento příkaz stáhne knihovnu a nainstaluje ji za vás. To je vše, co musíte udělat.

  1. Otevřete okno terminálu (ikona černé obrazovky na hlavním panelu vašeho Pi) a zadejte následující příkaz:

    z importu easygui *
    čas importu

    Importujte EasyGUI

    Tato verze importu později usnadní kódování. Například při importu tímto způsobem, místo psaní easygui.msgbox, Můžeš použít msgbox.

  2. Ve své nejjednodušší podobě poskytuje toto okno se zprávou řádek textu a jediné tlačítko, na které chcete kliknout. Zde je příklad k vyzkoušení. Po řádku importu zadejte následující řádek a uložte pomocí Ctrl+X:

    z importu easygui *
    čas importu
    msg = „Super box, co?“
    title = „Jsem schránka zpráv“
    # Zde přidejte další příkazy

    Zobrazí se okno se zprávou s Jsem schránka zpráv napsáno v horní liště a Super box, co? nad tlačítkem.

    Poštovní schránka EasyGUI

  3. Někdy budete potřebovat, aby uživatel potvrdil akci nebo se rozhodl pokračovat. Pole ccbox nabízí stejný řádek textu jako výše uvedené primární pole se zprávou, ale poskytuje dvě tlačítka: Pokračovat a zrušení. Zde je příklad používaného s tiskem tlačítek pro pokračování a zrušení do terminálu. Po každém stisknutí tlačítka můžete akci změnit a dělat, co chcete:

    z importu easygui *
    čas importu
    msg = „Chcete pokračovat?“
    title = „Pokračovat?“
    if ccbox (msg, title): # zobrazí dialogové okno Pokračovat / Zrušit
    tisk „Uživatel vybrán pokračovat“
    # Zde přidejte další příkazy
    else: # uživatel zvolil Zrušit
    tisk „Uživatel zrušen“
    # Zde přidejte další příkazy

    EasyGUI Pokračovat Zrušit rámeček

  4. Pokud vám možnosti vestavěného boxu nedávají to, co potřebujete, vytvořte si pomocí tlačítka buttonbox vlastní box s tlačítky. To je skvělé, pokud máte více možností, které potřebují zakrýt nebo možná ovládáte řadu LED diod nebo jiných komponent pomocí uživatelského rozhraní. Zde je příklad výběru omáčky pro objednávku:

    z importu easygui *
    čas importu msg = „Jakou omáčku byste chtěli?“
    volby = [„Mild“,“Hot“,“Extra Hot“]
    response = buttonbox (msg, choices = choices) pokud odpověď == „Mírná“:
    tisknout odpověď
    pokud odpověď == „Hot“:
    tisknout odpověď
    if reply == „Extra Hot“:
    tisknout odpověď

    EasyGUI Buttonbox

  5. Tlačítka jsou skvělá, ale pro dlouhý seznam možností má výběr pole smysl. Tato pole obsahují seznam dostupných možností v řádcích, jeden za druhým. An OK a zrušení krabice je na stranu. Jedná se o rozumně inteligentní možnosti řazení podle abecedy a také umožňuje stisknutím klávesy přejít na první možnost daného písmene. Zde je příklad ukazující deset jmen, které můžete vidět, byly seřazeny na snímku obrazovky.

    z importu easygui *
    čas importu
    msg = „Kdo vypustil psy?“
    title = „Chybějící psi“
    volby = [„Alex“, „Cat“, „Michael“, „James“, „Albert“, „Phil“, „Yasmin“, „Frank“, „Tim“, „Hannah“]
    choice = choicebox (zpráva, název, volby)

    Pole pro výběr EasyGUI

  6. Formuláře jsou skvělý způsob, jak zachytit data pro váš projekt. EasyGUI má možnost multenterboxu, která vám umožňuje zobrazit pole se štítkem a získat tak informace. Jedná se o případ označení polí a zachycení vstupu. Níže uvedený příklad je pro jednoduchý registrační formulář členství v tělocvičně. Existují možnosti přidání ověření a dalších pokročilých funkcí, které web EasyGUI podrobně pokrývá.

    z importu easygui *
    čas importu
    msg = „Informace o členech“
    title = „Formulář pro členství v tělocvičně“
    fieldNames = [„First Name“,“Surname“,“Age“,“Weight“]
    fieldValues ​​= [] # počáteční hodnoty
    fieldValues ​​= multenterbox (msg, title, fieldNames)
    tiskové poleHodnoty

    EasyGUI Multenterbox

  7. Můžete přidat obrázky do svých rozhraní EasyGUI zahrnutím minimálního množství kódu. Uložte obrázek na svůj Raspberry Pi do stejného adresáře jako váš skript EasyGUI a poznamenejte si název a příponu souboru (například image1.png). Jako příklad slouží pole s tlačítky:

    z importu easygui *
    čas importu
    image = „RaspberryPi.jpg“
    msg = „Je to Raspberry Pi?“
    volby = [„Yes“,“No“]
    odpověď = schránka na tlačítka (zpráva, obrázek = obrázek, volby = volby)
    pokud odpověď == „Ano“:
    tisk „Ano“
    jiný:
    vytisknout „Ne“

    Obrázky EasyGUI

Pokročilejší funkce

K dispozici je více možností pole a příkladů v závislosti na tom, kolik se toho chcete naučit a co váš projekt vyžaduje.

Heslo EasyGUI

K dispozici jsou pole pro heslo, pole pro kód a pole pro soubory. Je to všestranná knihovna, kterou lze snadno vyzvednout během několika minut, a také s některými vynikajícími možnostmi ovládání hardwaru. Pokud se chcete naučit kódovat jiné věci, jako je Java, HTML nebo další, podívejte se na nejlepší dostupné zdroje pro kódování online.