PyQt | |
---|---|
| |
Típusú | Qt kötés Pythonhoz |
Fejlesztő | Riverbank számítástechnika |
Beírva | C++ , Python |
Operációs rendszer | Többplatformos szoftver (Windows, MacOS, Unix) |
Első kiadás | 1998 |
legújabb verzió | 6.3.1 ( 2022. június 17. ) |
Engedély | GPL2 , GPL3 és kereskedelmi |
Weboldal | riverbankcomputing.com/s… |
Médiafájlok a Wikimedia Commons oldalon |
A PyQt a Python programozási nyelv Qt grafikus keretrendszeréhez tartozó kiterjesztések (kötések) készlete , amely Python- kiterjesztésként van megvalósítva .
A PyQt a brit Riverbank Computing cég fejleszti [1] . A PyQt a Qt által támogatott összes platformon fut: Linuxon és más UNIX-szerű operációs rendszereken , macOS -en és Windowson . Három verziója létezik: PyQt6, PyQt5 és PyQt4, amelyek támogatják a Qt megfelelő verzióit. A PyQt a GPL (2. és 3. verzió) és kereskedelmi licencek [2] alatt kerül terjesztésre .
A PyQt szinte teljesen megvalósítja a Qt képességeit. Ez több mint 600 osztály [3] , több mint 6000 függvény és metódus, köztük:
A PyQt tartalmazza a Qt Designert ( Qt Creator ) is, egy grafikus felhasználói felület tervezőt. A pyuic program Python kódot állít elő a Qt Designerben létrehozott fájlokból. Ez a PyQt nagyon hasznos eszközzé teszi a gyors prototípuskészítéshez. Ezen kívül Pythonban írt új grafikus vezérlőket is hozzáadhat a Qt Designerhez.
Korábban a PyQt a PyQt-ban írt Eric fejlesztői környezettel volt kötve. Eric rendelkezik beépített hibakeresővel, és konzolprogramok létrehozására használható. Már külön projektként is elérhető [4] [5] [6] .
A Qt Designer egy többplatformos GUI elrendezés és űrlapkészítő. Lehetővé teszi a widgetek és párbeszédpanelek gyors tervezését képernyő-űrlapok segítségével, ugyanazokkal a widgetekkel, amelyeket az alkalmazásban is használunk. A Qt Designerrel készített űrlapok teljesen működőképesek, és valós időben is megtekinthetők [7] .
Normál minimalista példa, amely képet ad a PyQt-ról. A program egy üres ablakot jelenít meg alapvető funkciókkal - átméretezés, kicsinyítés, maximalizálás:
#! /usr/bin/env python2 # -*- kódolás: utf-8 -*- # sys importálása PyQt4 - ből.QtGui import * # interfész összetevők # Minden alkalmazásnak létre kell hoznia egy QApplication objektumot # sys.argv - parancssori argumentumok listája application = QApplication ( sys . argv ) # QWidget az összes felhasználói felület objektum alaposztálya ; ha a # konstruktort szülő nélkül használod egy widgethez, ez a widget ablak widgetté válik = QWidget ( ) widget . átméretezés ( 320 , 240 ) # widget átméretezése . setWindowTitle ( "Hello, World!" ) # állítsa be a widget címét . mutat () # az ablak megjelenítése a képernyőn sys . kilépés ( application . exec_ ()) # elindítja a fő alkalmazási ciklust |
Ez a példa a komolyabb programok készítésének alapelveit mutatja be. Python 3 és Qt Designer használja. Objektum-orientált megközelítést használnak a vizuális megjelenítés és a programlogika elkülönítésére.
A program összeállítása:
A test.pyw fájl tartalma :
#! /usr/bin/env python3 # import sys a PyQt4 -ből import QtCore , QtGui # tartalmazza a fő PyQt modulokat import mainform # tartalmazza az űrlapleíró modult def main (): app = QtGui . QApplication ( sys . argv ) # létrehozza a fő program objektumot form = mainform . MainForm () # létrehoz egy űrlap objektumot . show () # az űrlapobjektum és a tartalomvisszaadási alkalmazás megjelenítésére utasít . exec () # elindítja az alkalmazást if __name__ == "__main__" : sys . kilépés ( fő ())A mainform.py fájl tartalma :
#! /usr/bin/env python3 # a PyQt4 -ből import QtCore , QtGui , uic # tartalmazza az alapvető PyQt modulokat # fő űrlap prototípus osztálya MainForm ( QtGui . QDialog ): # constructor def __init__ ( self ): super ( MainForm , self ) . __init__ () # dinamikusan betölti az uic űrlap vizuális megjelenítését . loadUi ( "mainform.ui" , saját ) # a gombkattintás eseményét a self metódushoz köti . connect ( self . pushButton , QtCore . SIGNAL ( "clicked()" ), self . setLabelText ) def setLabelText ( self ): self . címke . setText ( "Új címkeszöveg" )Ebben a példában meglehetősen egyszerű funkciókat biztosít a setLabelText metódus . Ha azonban a bejövő adatok összetettebb feldolgozására van szükség, akkor ezt a feldolgozást célszerű egy külön modulba (fájlba) áthelyezni.
A SIP egy eszköz Python-összerendelések automatikus generálására C és C++ könyvtárak számára. A SIP-et eredetileg 1998-ban a PyQt számára fejlesztették ki, amely Python-összerendelés a Qt widget eszközkészlethez, de alkalmas bármilyen más C vagy C++ könyvtárhoz való kötésre is [8] .
A SIP az API -t leíró utasításokat (.sip fájlokat) vesz fel, és létrehozza a szükséges C++ kódot. Ezután lefordítja, és a kimenet egy Python modul. A .sip fájlok osztályfejléc fájlok, amelyekből néhány dolog eltávolítva (mivel a SIP nem tartalmaz teljes C++ elemzőt) és néhány dolog hozzáadva (mivel a C++ nem tartalmaz elegendő információt az API működéséről).
A PyQt4 egy belső eszközt (PyQt-ban írva), a metasip-et használja. Ez egyfajta IDE a SIP-hez. A GCC -XML segítségével elemzi a legújabb fejlécfájlokat, és XML-ben menti a releváns adatokat egy metasip projektbe. A metasip ezután egyfajta különbséget tesz az API előző verziójával, és feljegyzi az áttekintendő változtatásokat. A változtatások listája ezután a grafikus felhasználói felület segítségével jön létre, és automatikusan bekerül a TODO -ba . A .sip fájlok létrehozása csak egy kattintásnyira van.
Ami a generált kód működését illeti, nem sokban különbözik bármely más kötésgenerátor működésétől. A Python nagyon jó modul API-val rendelkezik, ami az egyik oka a harmadik féltől származó eszközök Python-kötéseinek nagy számának. A SIP minden C++ osztályhoz C kódot generál, amely létrehozza a megfelelő Python osztályt [9] .
A PyQt kettős licencét meglehetősen összetett kapcsolatok határozzák meg ennek a kiegészítőnek a hatókörében (kötés) a Qt grafikus könyvtáron keresztül. A GPL licenc alatt a könyvtár használható nyílt forráskódú programok létrehozására . Ha nem lehetséges a kód terjesztése a GPL feltételeinek megfelelően, akkor kereskedelmi licencet vásárolhat [10] .
A Nokia részéről a Riverbank Computinggal próbáltak tárgyalni a licenc megváltoztatásáról, de nem jártak sikerrel. Az eredmény a PySide [11] nevű projekt volt, amely a PyQt analógja, beleértve az utóbbival való kompatibilitás fenntartását API-szinten, de az LGPL licenc alatt került kiadásra, hogy a fejlesztők és kereskedelmi projektek ingyenesen használhassák a Pythont a Qt-vel együtt.
A Riverbank azonban nem zárja ki annak lehetőségét, hogy a PyQt az LGPL értelmében a jövőben licencelje.
A Riverbank Computing Limited 1998 óta fejleszti és karbantartja a PyQt-ot, azokat az összerendeléseket, amelyek lehetővé teszik a Qt használatát a Python programozási nyelvvel [1] .
A PyQt széles felhasználói körrel rendelkező termék. A PyQt kereskedelmi felhasználói közé tartoznak olyan jól ismert vállalatok, mint a Disney , a Dreamworks , a Pixar , az Industrial Light and Magic és a Sony Pictures . Összesen több mint 200 kereskedelmi felhasználó van (2006-os adatok szerint) [9] .
Qt | |
---|---|
Technológia | |
Eszközök | |
Kötések | |
Kapcsolódó témák |
Piton | |
---|---|
Közösség | |
Megvalósítások | |
Egyéb |
|
Ingyenes és nyílt forráskódú szoftver | |
---|---|
A fő dolog |
|
Közösség |
|
Szervezetek | |
Licencek | |
Problémák | |
Egyéb |
|
|
GUI elemek eszközkészletei (készletei) . | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
alacsony szintű |
| ||||||||||||||||||||||||||
magas szintű |
|