Tkinter Progress Bar

Tkinter Progress Bar



Pomocí widgetu ukazatele průběhu můžete klienta aktualizovat o stavu zdlouhavého procesu. Cílem widgetu je poskytnout uživateli jistotu, že se něco děje. Má dva různé režimy provozu. V určeném režimu widget zobrazí indikaci, která se pohybuje v předem určeném směru. Widget se pohybuje v neurčitém stavu, aby klient mohl mít dojem, že se něco děje. Signál v tomto stylu osciluje tam a zpět mezi konci widgetu. Použití určitých a neurčitých ukazatelů průběhu v Pythonu bude popsáno v tomto tutoriálu.

Začněme konfigurací knihovny Tkinter v Pythonu. Po úspěšném spuštění terminálu vyzkoušejte následující dotaz pro konfiguraci balíčku Tkinter. Před použitím tohoto návodu se ujistěte, že máte Python již nainstalovaný.

$ sudo apt install python3-tk







Příklad 1

Začněme naším prvním příkladem Pythonu s použitím modulu Tkinter k vytvoření určitého ukazatele průběhu v jeho GUI. Vytvořili jsme tedy nový soubor Python s názvem „new.py“ a přidali následující kód. Tento kód jsme zahájili importem všech podřízených objektů z knihovny Tkinter v Pythonu na prvním řádku. Poté jsme importovali objekt třídy „ttk“ z modulu Tkinter na druhém řádku kódu.



Byl zavolán konstruktor třídy Tk() a jeho objekt byl uložen do proměnné „t“. Funkce „title“ byla dosažena pomocí objektové proměnné „t“ pro vytvoření názvu pro GUI. Velikost okna GUI Tkinter byla nastavena na „300×200“ pomocí funkce geometry(). Ukazatel průběhu by byl generován uživatelem definovanou funkcí „Pbar()“. Na tuto funkci se podíváme v druhé části tohoto článku.



Vytvořili jsme proměnnou „p“ na 8 čt řádek tohoto kódu Pythonu, který používal funkci Progressbar() prostřednictvím objektu třídy „ttk“ k vytvoření ukazatele průběhu na obrazovce GUI. Objekt „t“ mu byl předán, zatímco jeho orientace byla nastavena na horizontální, jeho délka byla nastavena na 400 a jeho režim je určený, tj. bude se pohybovat pouze určitým směrem. Výplň osy „y“ byla nastavena na 30 pomocí funkce „pack()“ pro tento ukazatel průběhu.





Poté jsme pomocí funkce Button() vytvořili nové tlačítko „b“ a předali mu objekt „t“, nějaký text a příkaz, který se má provést po kliknutí na tlačítko, tedy funkci tzv. funkce „Pbar“. Funkce Pbar() by zvýšila hodnotu ukazatele průběhu „p“ o deset a vrátila by se k proměnné „b“. Výplň osy „y“ pro tlačítko byla nastavena na „10“ pomocí funkce pack() a funkce mainloop() je zde pro zacyklení celého provádění.



Po dokončení kódu Pythonu jsme jej uložili a spustili na konzoli pomocí dotazu „python3“ následovaného názvem souboru „new.py“:

$ python3 new.py

Spustil Tkinter GUI Pythonu s názvem „Progress Bar“ na obrazovce naší konzole. Na následujícím obrázku je pouze ukazatel průběhu bez zpracování. Nejprve musíte klepnout na tlačítko.

Po klepnutí na tlačítko „Klepněte sem!“ se modrý ukazatel průběhu zobrazí následovně:

Po třech po sobě jdoucích kliknutích jsme zaznamenali následující průběh bez pohybu:

Po dosažení konce ukazatele průběhu se nemůžeme posunout dále, tj. určit ukazatel postupu.

Příklad 2

Podívejme se na vytvoření neurčitého ukazatele průběhu, který se může pohybovat dozadu a dopředu v oblasti postupu pomocí modulu Tkinter GUI Python. Tento kód Pythonu jsme tedy spustili importem modulu Tkinter jako „tk“ a objektu ttk z třídy „ttk“. Objekt tk byl odhozen, aby se získal výsledek konstruktoru „Tk()“ a uložen do proměnné „t“.



Proměnná „t“ byla použita s funkcí title() k přidání názvu pro GUI vedle funkce geometry() k určení velikosti okna GUI, které se má zobrazit. Funkce grid() byla volána s proměnnou „t“, aby uspořádala GUI v tabulkovém formátu.

Poté jsme pomocí proměnné „p“ vytvořili ukazatel průběhu pomocí funkce Progressbar() objektu třídy ttk se stejnou proměnnou „t“, horizontální orientací, 300 délkami a neurčitým režimem. Ukazatel průběhu byl uspořádán tabulkovým způsobem pomocí funkce „grid()“, která používala specifickou výplň pro osu „x“ a „y“. Vytvořili jsme dvě tlačítka, „s“ a „e“, pro zahájení pohybu ukazatele průběhu, jeho ukončení a posun tam a zpět.







Sticky parametr funkce grid() pro obě tlačítka definuje směr, tj. východ a západ. Příkazy „start“ a „stop“ byly nastaveny pro obě tlačítka na 9 čt a 11 čt čára. Spuštěním funkce mainloop() byl náš program dokončen a po uložení připraven k použití.





Poprava proběhla podobným způsobem.





$ python3 new.py

Po spuštění GUI se zobrazí následující obrazovka:



Po stisknutí tlačítka „Spustit klepnutím“ se ukazatel průběhu začal pohybovat vpřed.

Po dosažení konce se pohybuje opačným směrem, tedy na západ.

Po klepnutí na tlačítko „Tap to Stop“ se ukazatel průběhu opět nastaví na výchozí pozici.

Závěr

Tento článek ukázal použití ukazatele průběhu v Tkinter GUI. Jednoduše jsme použili objekty třídy Tkinter k volání různých widgetů, aby bylo GUI Pythonu interaktivnější. V našich příkladech jsme diskutovali o použití určitých a neurčitých ukazatelů průběhu. Doufáme, že se vám bude jejich implementace líbit.