Co je PyQt4?
PyQt4 je modul pro Python, který umožňuje vytvářet grafické aplikace používající knihovnu QT4 firmy Trolltech. Aplikace napsané s použitím PyQt4 běží na všech operačních systémech, které jsou podporovány knihovnou QT4. V současné době jde o Windows, Mac OS X a Linux. Knihovna QT4 je na rozdíl od QT3 licencována pod GNU GPL i ve verzi pro Windows. Je tedy možné vytvářet GPL programy využívající QT4 i pro Windows, což s QT3 nebylo možné. Knihovna PyQt4 obsahuje také nástroje pro práci s síťovými sockety, vlákny, SQL databázemi, OpenGL nebo XML, ale o těchto vlastnostech v seriálu nebudeme mluvit. Články jsou určeny pro čtenáře, kteří umí programovat v jazyce Python. Pokud tento jazyk neovládáte, můžu vás odkázat na seriál Létající cirkus nebo oficiální Python tutoriál.
Vytváříme okno – Teorie
Než vytvoříme okno, je potřeba si říci něco o třídách a funkcích, které budeme používat. Nepovíme si o všech funkcích, které PyQt4 poskytuje, ale jen o těch, které pro nás mají v tuto chvíli význam. PyQt4 se skládá z mnoha menších modulů, které tématicky rozdělují jeho třídy a funkce. Proto musíme na začátku programu importovat všechny moduly PyQt4, které budeme potřebovat.
QApplication ( argv ) – modul QtGui
Funkce QApplication vytvoří nový objekt aplikace. Parametr argv je seznam argumentů předaných naší QT aplikaci z příkazové řádky. Může se jednat například o informaci, na kterém displeji se má aplikace spustit, apod. Objekt aplikace může být vytvořen v programu jen jednou.
QApplication.exec_( )
Funkce QApplication.exec_( ) spustí naši aplikaci.
QMainWindow ( parent=0 ) – modul QtGui
Funkce QMainWindow vytvoří nové okno. Parametr parent je objekt (widget) QT, který je rodičem našemu oknu. Pokud parametr nezadáme, je roven nule a tím pádem je naše okno hlavním oknem programu. Okno se vytvoří pouze v paměti a nezobrazí se, dokud nezavoláme jeho fuknci show() (viz níže).
QMainWindow.setWindowTitle ( title )
QMainWindow.setWindowTitle nastavuje titulek okna.
QMainWindow.show ( )
Funkce zobrazí okno. Funkci show() má kromě QMainWindow drtivá většina objektů (widgetů) v QT4.
Vytváříme okno – Praxe
Nyní již víme vše potřebné k vytvoření okna a můžeme si jeho vytvoření ukázat prakticky.
#!/usr/bin/env python # importujeme moduly PyQt4, ktere budeme pouzivat from PyQt4 import QtCore, QtGui # importujeme modul sys kvuli sys.argv import sys # vytvorime objekt aplikace app = QtGui.QApplication(sys.argv) # vytvorime hlavni okno aplikace MainWindow = QtGui.QMainWindow() # dame hlavnimu oknu titulek MainWindow.setWindowTitle("Titulek okna") # zobrazime hlavni okno MainWindow.show() # spustime aplikaci sys.exit(app.exec_())
Přidáváme tlačítko – Teorie
Tlačítka jsou jedním ze základních ovládacích prvků grafických programů. My se naučíme vytvořit jednoduché tlačítko a přidat jej do programu. Opět si budeme muset nejdříve povědět o některých funkcích, které budeme používat.
QPushButton ( parent ) – modul QtGui
QPushButton ( text, parent ) – modul QtGui
Funkce QPushButton vytvoří nové tlačítko. Paramter parent je rodič tlačítka (nadřazený widget). V našem případě je rodičem tlačítka hlavní okno, ve kterém bude tlačítko zobrazeno. Pokud chceme tlačítku rovnou přiřadit popisek, můžeme použít druhou syntaxi, kde proměnná text bude jeho popiskem.
QPushButton.setText ( text )
Tato funkce slouží k změně nebo nastavení popisku tlačítka.
Přidáváme tlačítko – Praxe
Do programu stačí přidat dva řádky, které jsme si popsali výše, a zobrazí se nám v okně tlačítko. Jistě vás napadne, proč okno musíme zobrazovat pomocí funkce show() a tlačítko touto funkcí zobrazit nemusíme. Je to tak proto, že zobrazením rodičovského objektu automaticky zobrazíme objekty dceřiné.
#!/usr/bin/env python from PyQt4 import QtCore, QtGui import sys app = QtGui.QApplication(sys.argv) MainWindow = QtGui.QMainWindow() MainWindow.setWindowTitle("Titulek okna") # Vytvorime tlacitko s rodicem MainWindow PushButton = QtGui.QPushButton(MainWindow) # Dame tlacitku popisek PushButton.setText("Popisek tlacitka") MainWindow.show() sys.exit(app.exec_())
Samozřejmě bychom dva příkazy, kterými vytváříme tlačítko a dáváme mu popisek, mohli nahradit příkazem jedním. Ten by v tomto případě vypadal takto:
PushButton = QtGui.QPushButton("Popisek tlacitka",MainWindow)
Závěr
V dalším díle si řekneme něco o layoutech, které nám pomohou rozmísťovat objekty v okně. Tím pádem bude tlačítko měnit svou velikost podle změny velikosti okna. Také si řekneme o signálech a slotech, díky kterým můžeme po kliknutí na tlačítko například zavřít okno nebo zavolat naši vlastní funkci.