1. diel - Zoznámenie s PyQt, Inštalácia a prvé okenné aplikácie v Python
Vitajte v kurze o tvorbe okenných / formulárových aplikácií v Pythone. Postupne si spolu vytvoríme niekoľko projektov, od tých úplne jednoduchých až po užitočné a reálne použiteľné desktopové aplikácie. Väčšina kurzu je venovaná najpopulárnejšia multiplatformový formulárové knižnici Qt. V druhej časti kurzu je potom ukázaná aj práca s knižnicou Tkinter, rovnako veľmi populárne, avšak minimalistickejší a obmedzenú iba pre Python.
PyQt
V dnešnom tutoriále si teda vytvoríme svoju prvú okenné aplikáciu v Pythone za pomoci Qt frameworku. Ten sa hojne využíva k tvorbe GUI aplikácií v rôznych programovacích jazykoch, je teda multiplatformový a vyzerá natívne. Qt je napísané v C ++ a je v ňom možné písať aplikácie aj na mobilné zariadenia. My budeme používať PyQt, čo je port Qt pre Python.
Inštalácia PyQt
Počítam s tým, že Python máte nainštalovaný. Osobne odporúčam Python 3.6, ideálne distribúciu Anaconda alebo odľahčená verzia Miniconda (Miniconda nainštaluje iba Conde a python, Anaconda nainštaluje aj ďalších 150 knihovať pre dáta science, matematiku a vizualizáciu). Klasická distribúcie samozrejme tiež bohato postačuje.
Keď už máte Python nainštalovaný, teda ak ste ho doteraz nemali, tak sa vrhneme na inštaláciu PyQt5. Spustíme príkazový riadok (Kláves Win, napíšeme "cmd", klikneme na nájdený program "Príkazový riadok") a vložíme do neho príkaz:
py -m pip install pyqt5
Inštalácia môže chvíľu trvať. Nainštalovali sa nám Qt Widgety a samotnej PyQt5. Teraz si overíme, či inštalácia prebehla naozaj úspešne. Pre kontrolu spustíme python shell príkazom:
py
v príkazovom riadku / terminálu a potom knižnicu skúsime naimportovať:
import PyQt5
Ak vám shell nevypísala žiadnu chybu, ste pripravení si vytvoriť svoju prvú aplikáciu v PyQt.
Hello world
Ani v úvodnej formulárové lekcii nezačneme ničím iným, než Hello World. To je populárny aplikácia, Vyhlasujúca hlášku "Ahoj Svete!", V našom prípade už nie do konzoly, ale do formulára.
Vytvorme si teda nový Python projekt, môžete použiť štandardný editor
IDLE, a uložte ho napr. Ako main.py
. Kód našej prvej aplikácie
bude nasledujúci, vzápätí si ho vysvetlí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_())
Ako prvý musíme importovať widgety z PyQt5, ako sa ovládacím prvkom
formulárov v tomto frameworku prezýva. Ďalej importujete modul
sys
, keďže QApplication
sa odovzdávajú vstupné
argumenty z príkazového riadku, na ktoré aplikácie potom môže nejako
reagovať. Tvrdenia získame práve z modulu sys
. Namiesto
argumentov by síce išlo vložiť len prázdny list ([]
), ale
predsa chceme robiť veci od začiatku správne
Po importoch nasleduje vytvorení QApplication
, ktorá
reprezentuje celú našej formulárovom aplikáciu. Ďalej tvoríme formulár
ako QWidget
a vložíme do neho textový popis QLabel
s hláškou "Ahoj Svete!", Ktorú odovzdáme ako parameter widgetu. Všetky
inštancie tvoríme pomocou triedy QtWidgets
. Pre vloženie
widgetov do formulára je nutné uviesť do akého formulára sa majú vložiť
pomocou parametra parent
.
Formulári môžeme ďalej nastavovať layouty (môj obľúbený je BoxLayout), veľkosť, pozíciu a mnoho ďalších, čo si ukážeme za chvíľu.
Nakoniec je formulár nutné zobraziť a aplikáciu spustiť
(sys.exit()
vráti operačnému systému výstupný kód programu).
Keď náš projekt teraz spustíme, budeme odmenení nasledujúce formulárovom
aplikácií:
Veľkosť okna
Naša aplikácia plní účel, ale moc dobre nevyzerá. Bolo by pekné, keby okno bolo väčšie a zobrazovalo sa na inej pozícii. Pred zobrazenie formulára pridáme riadok:
formular.setGeometry(300, 200, 250, 300)
Funkcia setGeometry()
prijíma postupne pozíciu na obrazovke
zľava, pozíciu na obrazovke zhora, šírku okna a jeho výšku). Čo je to ale
za okno bez titulku?
Titulok
Titulok oknu nastavíme funkcií setWindowTitle()
, prijímajúci
samozrejme titulok ako text.
formular.setWindowTitle("Moje první aplikace v PyQt")
Po spustení aplikácie nám vznikne nasledujúce dielo:
K dokonalosti chýba už len, že QLabel
nie je uprostred. Preto
využijeme tzv. Layout. Layouty sú komponenty, ktoré umožňujú widgety vo
formulári nejakým spôsobom poskladať a zarovnať. Napr.
QHBoxLayout
. Ten widgety vo formulári radí vedľa seba a zvisle
sú vycentrované. Aby sme QLabel
vycentroval aj vodorovne,
vložíme pred neho a za neho rozťahujúce-sa prázdne miesto pomocou funkcie
addStretch()
.
Finálny kód našej Hellow World aplikácie vyzerá nasledovne, formulár som ešte trochu zväčšil, aby sa zobrazil celý titulok 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ázok samotnej aplikácie:
V budúcej lekcii, Aplikácie Kalkulačka v PyQt , si ukážeme tvorbu jednoduché okenné kalkulačky. Vyskúšame callback funkcie pri stlačení tlačidla a zmenu hodnoty / textu u labelu.
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é 184x (1.17 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Python