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í.
Mezi 13:00 až cca 16:00 proběhne odstávka sítě z důvodu aktualizace. Web bude po celou dobu nedostupný.

Lekce 1 - Seznámení s PyQt, Instalace a první okenní aplikace v Python

Vítejte v kurzu o tvorbě okenních/formu­lářových aplikací v Pythonu. Postupně si spolu vytvoříme několik projektů, od těch úplně jednoduchých až po užitečné a reálně použitelné desktopové aplikace. Většina kurzu je věnována nejpopulárnější multiplatformní formulářové knihovně Qt. V druhé části kurzu je poté ukázána i práce s knihovnou Tkinter, rovněž velmi populární, ovšem minimalističtější a omezenou pouze pro Python.

PyQt

V dnešním tutoriálu si tedy vytvoříme svou první okenní aplikaci v Pythonu za pomoci Qt frameworku. Ten se hojně využívá k tvorbě GUI aplikací v různých programovacích jazycích, je tedy multiplatformní a vypadá nativně. Qt je napsané v C++ a je v něm možné psát aplikace i na mobilní zařízení. My budeme používat PyQt, což je port Qt pro Python.

Instalace PyQt

Počítám s tím, že Python máte nainstalovaný. Osobně doporučuji Python 3.6, ideálně distribuci Anaconda nebo odlehčená verze Miniconda (Miniconda nainstaluje pouze condu a python, Anaconda nainstaluje i dalších 150 knihoven pro data science, matematiku a vizualizaci). Klasická distribuce samozřejmě také bohatě postačuje.

Když již máte Python nainstalovaný, tedy pokud jste ho doteď neměli, tak se vrhneme na instalaci PyQt5. Spustíme příkazový řádek (Klávesa Win, napíšeme "cmd", klikneme na nalezený program "Příkazový řádek") a vložíme do něj příkaz:

py -m pip install pyqt5

Instalace může chvíli trvat. Nainstalovaly se nám Qt Widgety a samotné PyQt5. Nyní si ověříme, zda instalace proběhla opravdu úspěšně. Pro kontrolu spustíme python shell příkazem:

py

v příkazovém řádku/terminálu a poté knihovnu zkusíme naimportovat:

import PyQt5

Pokud vám shell nevypsal žádnou chybu, jste připraveni si vytvořit svou první aplikaci v PyQt.

Hello world

Ani v úvodní formulářové lekci nezačneme ničím jiným, než Hello World. To je populární aplikace, vypisující hlášku "Ahoj Světe!", v našem případě již ne do konzole, ale do formuláře.

Vytvořme si tedy nový Python projekt, můžete použít standardní editor IDLE, a uložme jej např. jako main.py. Kód naší první aplikace bude následující, záhy si jej vysvětlíme:

from PyQt5 import QtWidgets
import sys

aplikace = QtWidgets.QApplication(sys.argv)
formular = QtWidgets.QWidget()
popisek = QtWidgets.QLabel("Ahoj Světe!", parent=formular)

formular.show()
sys.exit(aplikace.exec_())

Jako první musíme importovat widgety z PyQt5, jak se ovládacím prvkům formulářů v tomto frameworku přezdívá. Dále naimportujeme modul sys, jelikož QApplication se předávají vstupní argumenty z příkazové řádky, na které aplikace poté může nějak reagovat. Argumenty získáme právě z modulu sys. Místo argumentů by sice šlo vložit jen prázdný list ([]), ale přeci chceme dělat věci od začátku správně :)

Po importech následuje vytvoření QApplication, která reprezentuje celou naší formulářovou aplikaci. Dále tvoříme formulář jako QWidget a vložíme do něj textový popisek QLabel s hláškou "Ahoj Světe!", kterou předáme jako parametr widgetu. Všechny instance tvoříme pomocí třídy QtWidgets. Pro vložení widgetů do formuláře je nutné uvést do jakého formuláře se mají vložit pomocí parametru parent.

Formuláři můžeme dále nastavovat layouty (můj oblíbený je BoxLayout), velikost, pozici a mnoho dalších, což si ukážeme za chvíli.

Nakonec je formulář nutné zobrazit a aplikaci spustit (sys.exit() vrátí operačnímu systému výstupní kód programu). Když náš projekt nyní spustíme, budeme odměněni následující formulářovou aplikací:

Hello world formulářová aplikace v Pythonu pomocí PyQt - PyQt - Okenní aplikace v Pythonu

Velikost okna

Naše aplikace plní účel, ale moc dobře nevypadá. Bylo by hezké, kdyby okno bylo větší a zobrazovalo se na jiné pozici. Před zobrazení formuláře přidáme řádek:

formular.setGeometry(300, 200, 250, 300)

Funkce setGeometry() přijímá postupně pozici na obrazovce zleva, pozici na obrazovce shora, šířku okna a jeho výšku). Co je to ale za okno bez titulku?

Titulek

Titulek oknu nastavíme funkcí setWindowTitle(), přijímající samozřejmě titulek jako text.

formular.setWindowTitle("Moje první aplikace v PyQt")

Po spuštění aplikace nám vznikne následující dílo:

Programování formuláře pomocí PyQt v Pythonu - PyQt - Okenní aplikace v Pythonu

K dokonalosti chybí již jen, že QLabel není uprostřed. Proto využijeme tzv. Layout. Layouty jsou komponenty, které umožňují widgety ve formuláři nějakým způsobem poskládat a zarovnat. Např. QHBoxLayout. Ten widgety ve formuláři řadí vedle sebe a svisle jsou vycentrované. Abychom QLabel vycentrovali i vodorovně, vložíme před něj a za něj roztahující-se prázdné místo pomocí funkce addStretch().

Finální kód naší Hellow World aplikace vypadá následovně, formulář jsem ještě trochu zvětšil, aby se zobrazil celý titulek okna:

from PyQt5 import QtWidgets
import sys

aplikace = QtWidgets.QApplication(sys.argv)
formular = QtWidgets.QWidget()
boxlayout = QtWidgets.QHBoxLayout()

popisek = QtWidgets.QLabel("Ahoj Světe!", parent=formular)
formular.setGeometry(300, 200, 250, 300)

boxlayout.addStretch()
boxlayout.addWidget(popisek)
boxlayout.addStretch()

formular.setLayout(boxlayout)
formular.show()
sys.exit(aplikace.exec_())

A obrázek samotné aplikace:

Výsledná formulářová aplikace v Pythonu a PyQt - PyQt - Okenní aplikace v Pythonu

V příští lekci, Aplikace Kalkulačka v PyQt, si ukážeme tvorbu jednoduché okenní kalkulačky. Vyzkoušíme callback funkce při stisknutí tlačítka a změnu hodnoty/textu u labelu.


 

Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

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

 

Všechny články v sekci
PyQt - Okenní aplikace v Pythonu
Přeskočit článek
(nedoporučujeme)
Aplikace Kalkulačka v PyQt
Článek pro vás napsal MQ .
Avatar
Uživatelské hodnocení:
80 hlasů
Používám hlavně Python a zajímám se o Deep Learning a vše kolem.
Aktivity