PyQt

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2020. október 29-én felülvizsgált verziótól ; az ellenőrzések 46 szerkesztést igényelnek .
PyQt

Qt Designer Linuxon KDE Plasma 5 -tel
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 fő modulok áttekintése

GUI tervező

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

Programpéldák

szia világ!

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

Egy bonyolultabb példa

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 ( ())

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.

SIP

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

Licencfunkciók

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.

Történelem

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 fejlesztés a SIP létrehozásával és a PyQt 0.1 Qt 1.41 támogatással történő kiadásával kezdődött 1998 novemberében [12] ;
  • A 2000-ben megjelent 2.0-s verzió támogatja a Qt 2.2-t Linuxon és Windowson [12] ;
  • a Qt 3 támogatását 2001-ben hajtották végre [12] ;
  • a Mac OS X támogatását 2002-ben vezették be [12] ;
  • A PyQt4 kiadás a PyQt 4.0-val kezdődött Qt 4 támogatással 2006 júniusában [12] ;
  • A 2009. június 5-én megjelent 4.5-ös verzió támogatja a Python 3-at [13] ;
  • A 2010. január 14-én megjelent 4.7-es verzió támogatja a Qt 4.6-ot [14] ;
  • A 2013. június 17-én megjelent 5.0-s verzió támogatja a Qt 5.0-t [15] .

Figyelemre méltó programok PyQt használatával

  • A Cura [16] egy nyílt forráskódú 3D modellszeletelő alkalmazás 3D nyomtatókhoz.
  • Az Electrum [17] egy népszerű nyílt forráskódú Bitcoin kriptotárca.
  • Az Arduino IDE az Arduino PyQt-on való megvalósítása.
  • A Jabbim  egy többplatformos nyílt forráskódú azonnali üzenetküldő program , amely XMPP protokollt használ .
  • Eric IDE  – integrált fejlesztői környezet Python számára;
  • A GNS3  egy grafikus hálózati szimulátor.
  • Az Anki egy olyan program, amely megkönnyíti a szavak, kifejezések és bármilyen más információ memorizálását időközönkénti ismétlések segítségével.
  • Caliber , egy e-könyvkezelő alkalmazás
  • Dropbox , fájltárhely
  • fman , egy többplatformos fájlkezelő
  • Kodos , Python reguláris kifejezés hibakeresője
  • Leo , írástudó programtervező és szerkesztő
  • Ninja-IDE , egy bővíthető, nyílt forráskódú Python fejlesztői környezet
  • OpenLP , egy nyílt forráskódú szövegvetítő program
  • OpenShot , egy videószerkesztő program
  • Orange , egy adatbányászati ​​és vizualizációs keretrendszer
  • Puddletag , egy nyílt forráskódú, többplatformos ID3 címkeszerkesztő
  • QGIS , ingyenes Geographic Information Systems (GIS) asztali szoftver
  • qt-recordMyDesktop , Qt4 interfész a recordMyDesktop számára
  • Spyder , Python Data Science IDE
  • TortoiseHg , GUI a Mercurial forráskezelési programjához (Hg)
  • Veusz , tudományos rajzalkalmazás
  • qutebrowser [18] , egy Vim-szerű webböngésző minimalista felülettel.

Alkalmazás

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

Lásd még

Jegyzetek

  1. 1 2 Riverbank  Computing . Nokia weboldal . Hozzáférés dátuma: 2010. május 10. Az eredetiből archiválva : 2012. március 4.
  2. 1 2 Mi az a PyQt?  (angol) . Pyqt webhely. Hozzáférés dátuma: 2010. május 10. Az eredetiből archiválva : 2012. március 4.
  3. PyQt  Whitepaper . Pyqt webhely. Hozzáférés dátuma: 2010. május 10. Az eredetiből archiválva : 2012. március 4.
  4. Az Eric Python IDE  . Eric IDE webhely. Hozzáférés dátuma: 2010. május 10. Az eredetiből archiválva : 2012. március 4.
  5. A PyQt-  ról . Python Wiki. Hozzáférés dátuma: 2010. május 10. Az eredetiből archiválva : 2012. március 4.
  6. PyQt4  . _ Python Wiki. Hozzáférés dátuma: 2010. május 10. Az eredetiből archiválva : 2012. március 4.
  7. GUI tervező  . Nokia . Hozzáférés dátuma: 2010. május 10. Az eredetiből archiválva : 2012. március 4.
  8. ↑ Bevezetés - SIP  . Pyqt webhely. Letöltve: 2010. augusztus 14. Az eredetiből archiválva : 2012. március 4..
  9. 1 2 Phil Thompson beszél a PyQt-ról  . KDE.news. Letöltve: 2010. augusztus 13. Az eredetiből archiválva : 2012. március 4..
  10. Licenc  . _ Pyqt webhely. Hozzáférés dátuma: 2010. május 10. Az eredetiből archiválva : 2012. március 4.
  11. PySide GYIK  . Pyside webhely. Hozzáférés dátuma: 2010. május 10. Az eredetiből archiválva : 2012. március 4.
  12. 1 2 3 4 5 Mark Summerfield. Gyors GUI programozás Python és Qt segítségével . — 1. - Prentice Hall, 2008. - 648 p. — ISBN 978-0132354189 .
  13. Megjelent  a PyQt v4.5 . Pyqt webhely. Hozzáférés dátuma: 2010. május 10. Az eredetiből archiválva : 2012. március 4.
  14. ↑ Megjelent a PyQt v4.7  . Pyqt webhely. Hozzáférés dátuma: 2010. május 10. Az eredetiből archiválva : 2012. március 4.
  15. ↑ Megjelent a PyQt v5.0  . Pyqt webhely. Letöltve: 2013. július 2. Az eredetiből archiválva : 2013. július 2.
  16. Ultimaker Cura GitHub . Letöltve: 2020. május 28. Az eredetiből archiválva : 2020. szeptember 17.
  17. Electrum Bitcoin GitHub . Letöltve: 2020. május 28. Az eredetiből archiválva : 2020. május 10.
  18. qutebrowser . Letöltve: 2021. december 20. Az eredetiből archiválva : 2021. december 20.

Irodalom

Linkek