Halloweenská akce! Na stránce s dobitím bodů zadej dole kód STRASIDELNYCH20 a získej porci +20% bodů zdarma!
Akce končí 31.10. o půlnoci.

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

Python Okenní aplikace Seznámení s PyQt, Instalace a první okenní aplikace v Python

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 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 knihovem 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/termíná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

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

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

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.


 

Stáhnout

Staženo 12x (1.17 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?
2 hlasů
Autor je srdcem Pythonista.
Miniatura
Všechny články v sekci
Okenní aplikace v Pythonu
Miniatura
Následující článek
Aplikace Kalkulačka v PyQt
Aktivity (3)

 

 

Komentáře

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.

Zatím nikdo nevložil komentář - buď první!