Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

PyQt4 - Úvod a první okno

Tímto článkem začíná nový seriál, který se bude zabývat modulem pro Python umožňujícím vytvářet grafické aplikace s knihovnou QT4V. V dnešním úvodním dílu si řekneme, co vlastně PyQt4 je a proč je dobré jej používat. Naučíme se vytvořit jednoduchou aplikaci a přiřadit jí okno, do kterého umístíme tlačítko.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

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.set­WindowTitle ( title )

QMainWindow.set­WindowTitle 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

PyQt1 1

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

PyQt1 2

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é.

TIB2012

       
#!/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.

Školení: IP v 6 na Linuxu

Tento krátký kurz je určený speciálně pro zkušené správce sítí IPv4, kteří se chtějí seznámit s nastupujícím internetovým protokolem IPv6.

Platforma: Linux

  • Adresace
  • Link-local adresy
  • Dynamické přidělování adres
  • a další

Podrobnější informace a přihláška

Ohodnoťte jako ve škole:
Průměrná známka 3,06

Přehled názorů

QT != Qt
Z 8. 1. 2007 00:49
Nový
└ 
PyGtk - PyQt
anonymní uživatel 8. 1. 2007 12:55
Nový
 
├ 
Re: PyGtk - PyQt
zzz 8. 1. 2007 13:07
Nový
 
├ 
Re: PyGtk - PyQt
miso 8. 1. 2007 13:36
Nový
 
├ 
Re: PyGtk - PyQt
Martin 8. 1. 2007 14:56
Nový
 
└ 
Re: PyGtk - PyQt
reload 8. 1. 2007 20:51
Nový
 
 
├ 
Re: PyGtk - PyQt
Jakub Hegenbart 9. 1. 2007 05:56
Nový
 
 
│
└ 
Re: PyGtk - PyQt
pte 9. 1. 2007 17:53
Nový
 
 
│
 
└ 
Re: PyGtk - PyQt
Jakub Hegenbart 10. 1. 2007 02:11
Nový
 
 
└ 
Re: PyGtk - PyQt
ii 9. 1. 2007 20:09
Nový
 
 
 
└ 
Re: PyGtk - PyQt
eMko 9. 1. 2007 21:28
Nový
Super
Kyle 8. 1. 2007 08:16
Nový
výborně
muffy 8. 1. 2007 10:36
Nový
└ 
Re: výborně
Pepa 8. 1. 2007 11:21
Nový
 
├ 
Re: výborně
muffy 8. 1. 2007 11:27
Nový
 
│
└ 
Re: výborně
muffy 8. 1. 2007 12:08
Nový
 
└ 
Re: výborně
honza 8. 1. 2007 12:26
Nový
 
 
└ 
Re: výborně
Libor Chocholaty 8. 1. 2007 13:09
Nový
 
 
 
└ 
Re: výborně
Jan Kaluža 8. 1. 2007 13:13
Nový
Jsou ty výsledné apps nativní?
Tomeš 8. 1. 2007 13:13
Nový
└ 
Re: Jsou ty výsledné apps nativní?
Dragh 8. 1. 2007 16:05
Nový
 
└ 
Re: Jsou ty výsledné apps nativní?
Jan Kaluža 8. 1. 2007 16:10
Nový
Pěkný článek, těším se na pokračování.
Corwin 8. 1. 2007 13:32
Nový
└ 
Re: +1
x0nix 9. 1. 2007 15:14
Nový
Dobré téma
Martin 8. 1. 2007 15:03
Nový
├ 
Re: Dobré téma
Jan Kaluža 8. 1. 2007 15:49
Nový
│
└ 
Re: Dobré téma
Jan Kaluža 8. 1. 2007 15:51
Nový
└ 
Re: Dobré téma
w0rm 8. 1. 2007 19:31
Nový
PyQt vs. PHP-GTK
Vladimír Jícha 8. 1. 2007 20:13
Nový
├ 
Re: PyQt vs. PHP-GTK
reload 8. 1. 2007 20:59
Nový
│
└ 
Re: PyQt vs. PHP-GTK
uzivatel 10. 1. 2007 12:37
Nový
├ 
Re: PyQt vs. PHP-GTK
w0rm 8. 1. 2007 21:05
Nový
├ 
Re: PyQt vs. PHP-GTK
zdislav 8. 1. 2007 22:38
Nový
│
└ 
Re: PyQt vs. PHP-GTK
ico 9. 1. 2007 15:00
Nový
│
 
└ 
Re: PyQt vs. PHP-GTK
Jan Kaluža 9. 1. 2007 17:30
Nový
├ 
Re: PyQt vs. PHP-GTK
xyz 9. 1. 2007 15:51
Nový
│
├ 
Re: PyQt vs. PHP-GTK
mys elf 9. 1. 2007 19:11
Nový
│
│
└ 
Re: PyQt vs. PHP-GTK
xyz 9. 1. 2007 22:10
Nový
│
│
 
├ 
Re: PyQt vs. PHP-GTK
Cx 10. 1. 2007 00:14
Nový
│
│
 
└ 
Re: PyQt vs. PHP-GTK
mys elf 10. 1. 2007 09:13
Nový
│
│
 
 
└ 
Re: PyQt vs. PHP-GTK
xyz 11. 1. 2007 00:17
Nový
│
│
 
 
 
├ 
Re: PyQt vs. PHP-GTK
mys elf 11. 1. 2007 08:44
Nový
│
│
 
 
 
│
└ 
Re: PyQt vs. PHP-GTK
JeCh 11. 1. 2007 12:00
Nový
│
│
 
 
 
└ 
Re: PyQt vs. PHP-GTK
Gabriel Szász 11. 1. 2007 14:46
Nový
│
│
 
 
 
 
├ 
Re: PyQt vs. PHP-GTK
xyz 11. 1. 2007 22:35
Nový
│
│
 
 
 
 
│
├ 
Re: PyQt vs. PHP-GTK
mys elf 12. 1. 2007 00:38
Nový
│
│
 
 
 
 
│
│
└ 
Re: PyQt vs. PHP-GTK
xyz 12. 1. 2007 02:04
Nový
│
│
 
 
 
 
│
│
 
└ 
Re: PyQt vs. PHP-GTK
mys elf 12. 1. 2007 20:48
Nový
│
│
 
 
 
 
│
│
 
 
└ 
Re: PyQt vs. PHP-GTK
anonymní uživatel 12. 1. 2007 23:47
Nový
│
│
 
 
 
 
│
└ 
Re: PyQt vs. PHP-GTK
Gabriel Szász 12. 1. 2007 11:45
Nový
│
│
 
 
 
 
│
 
└ 
Re: PyQt vs. PHP-GTK
anonymní uživatel 12. 1. 2007 23:55
Nový
│
│
 
 
 
 
└ 
Re: PyQt vs. PHP-GTK
xyz 11. 1. 2007 22:41
Nový
│
└ 
Re: PyQt vs. PHP-GTK
ii 9. 1. 2007 20:13
Nový
└ 
Re: PyQt vs. PHP-GTK
Chlup 31. 1. 2007 17:54
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem