PyQt

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 29 oktober 2020; kontroller kräver 46 redigeringar .
PyQt

Qt Designer på Linux med KDE Plasma 5
Sorts Qt-bindning för Python
Utvecklaren Riverbank Computing
Skrivet i C++ , Python
Operativ system Programvara för flera plattformar (Windows, MacOS, Unix)
Första upplagan 1998
senaste versionen 6.3.1 ( 17 juni 2022 )
Licens GPL2 , GPL3 och kommersiella
Hemsida riverbankcomputing.com/s...
 Mediafiler på Wikimedia Commons

PyQt  är en uppsättning tillägg (bindningar) för det grafiska ramverket Qt för programmeringsspråket Python , implementerat som ett Python- tillägg .

PyQt är utvecklat av det brittiska företaget Riverbank Computing [1] . PyQt körs på alla plattformar som stöds av Qt: Linux och andra UNIX-liknande operativsystem , macOS och Windows . Det finns 3 versioner: PyQt6, PyQt5 och PyQt4 som stöder respektive versioner av Qt. PyQt distribueras under GPL (version 2 och 3) och kommersiella licenser [2] .

PyQt implementerar nästan fullständigt funktionerna hos Qt. Dessa är mer än 600 klasser [3] , mer än 6000 funktioner och metoder, inklusive:

PyQt inkluderar också Qt Designer ( Qt Creator ), en GUI-designer. Pyuic-programmet genererar Python-kod från filer skapade i Qt Designer. Detta gör PyQt till ett mycket användbart verktyg för snabb prototypframställning. Dessutom kan du lägga till nya grafiska kontroller skrivna i Python till Qt Designer.

Tidigare var PyQt paketerat med Erics utvecklingsmiljö , skriven i PyQt. Eric har en inbyggd debugger och kan användas för att skapa konsolprogram. Det finns nu tillgängligt som ett separat projekt [4] [5] [6] .

Översikt över huvudmodulerna

Qt Designer är en plattformsoberoende GUI-layout och formbyggare. Det låter dig snabbt designa widgets och dialoger med hjälp av skärmformulär med samma widgets som kommer att användas i applikationen. Formulär skapade med Qt Designer är fullt funktionella och kan även ses i realtid [7] .

Programexempel

Hej världen!

Programmet visar ett tomt fönster med grundläggande funktioner - ändra storlek, minimera, maximera:

#! # Varje applikation måste skapa ett QApplication - objekt # sys.argv - lista med kommandoradsargument application = QApplication ( sys . argv ) om du använder en konstruktor # utan en förälder för en widget kommer denna widget att bli en fönsterwidget = QWidget () widget . sys .

Ett mer komplext exempel

Ett objektorienterat tillvägagångssätt används för att separera den visuella representationen och programlogiken.

Programsammansättning:

Innehållet i filen test.pyw är :

#! /usr/bin/env python3 # import sys från PyQt4 import QtCore , QtGui # inkluderar huvud PyQt-modulerna import mainform # inkluderar formulärbeskrivningsmodulen def main (): app = QtGui . MainForm () # skapar ett formulärobjekt . show () # instruerar att visa formulärobjektet och innehållsreturappen . exec () # startar programmet om __namn__ == "__main__" : sys . avsluta ( huvudsak ())

Innehållet i filen mainform.py :

#! /usr/bin/env python3 # från PyQt4 import QtCore , QtGui , uic # innehåller PyQt-kärnmoduler # huvudform prototyp klass MainForm ( QtGui . QDialog ): __init__ () # laddar dynamiskt den visuella representationen av formuläret uic . loadUi ( "mainform.ui" , själv ) # binder knappklickshändelsen till självmetoden . connect ( self . pushButton , QtCore . SIGNAL ( "clicked()" ), self . setLabelText ) def setLabelText ( själv ): själv . etikett . setText ( "Ny etiketttext" )

I det här exemplet tillhandahålls ganska enkel funktionalitet av metoden setLabelText . Men om det är nödvändigt att implementera mer komplex bearbetning av inkommande data, är det lämpligt att flytta denna bearbetning till en separat modul (fil).

SIP

SIP  är ett verktyg för att automatiskt generera Python-bindningar för C- och C++-bibliotek. SIP utvecklades ursprungligen 1998 för PyQt, en Python-bindning för Qt-widgetverktygssatsen, men är också lämplig för bindning till andra C- eller C++-bibliotek [8] .

SIP tar en uppsättning instruktioner (.sip-filer) som beskriver API: t och genererar den nödvändiga C++-koden. Sedan kompileras den och utgången är en Python-modul. .sip-filerna är klasshuvudfiler med vissa saker borttagna (eftersom SIP inte innehåller en fullständig C++-parser) och vissa saker tillagda (eftersom C++ inte innehåller tillräckligt med information om hur API:et fungerar).

PyQt4 använder ett internt verktyg (skrivet i PyQt) som heter metasip. Detta är en slags IDE för SIP. Den använder GCC -XML för att analysera de senaste rubrikfilerna och spara relevant data i XML till ett metasip-projekt. metasip gör sedan en slags skillnad med den tidigare versionen av API:t och noterar eventuella ändringar som behöver ses över. Listan över ändringar genereras sedan med hjälp av GUI och läggs automatiskt in i TODO . Att skapa .sip-filer är bara ett klick bort.

När det gäller hur den genererade koden fungerar, skiljer den sig inte mycket från hur någon annan bindningsgenerator fungerar. Python har ett mycket bra modul-API, vilket är en av anledningarna till det stora antalet Python-bindningar för tredjepartsverktyg. För varje C++-klass genererar SIP C-kod som skapar motsvarande Python-klass [9] .

Licensfunktioner

Den dubbla licensen för PyQt dikteras av ganska komplexa relationer inom ramen för detta tillägg (bindande) över Qt-grafikbiblioteket. Under GPL-licensen kan biblioteket användas för att skapa program med öppen källkod . Om det inte är möjligt att distribuera koden i enlighet med villkoren i GPL kan du köpa en kommersiell licens [10] .

Från Nokias sida gjordes det försök att förhandla med Riverbank Computing angående ändring av licensen, men de misslyckades. Resultatet blev ett projekt kallat PySide [11]  - en analog av PyQt, inklusive att bibehålla kompatibilitet med det senare på API-nivå, men släppt under LGPL -licensen för att göra det möjligt för utvecklare och kommersiella projekt att använda Python gratis i samband med Qt.

Riverbank utesluter dock inte möjligheten att licensiera PyQt under LGPL i framtiden.

Historik

Riverbank Computing Limited har utvecklat och underhållit PyQt sedan 1998, bindningarna som gör att Qt kan användas med programmeringsspråket Python [1] .

  • Utvecklingen började med skapandet av SIP och lanseringen av PyQt 0.1 med stöd för Qt 1.41 i november 1998 [12] ;
  • version 2.0, som släpptes 2000, implementerade stöd för Qt 2.2 på Linux och Windows [12] ;
  • stöd för Qt 3 genomfördes 2001 [12] ;
  • stöd för Mac OS X implementerades 2002 [12] ;
  • PyQt4-versionen startade med PyQt 4.0 med Qt 4-stöd i juni 2006 [12] ;
  • version 4.5, som släpptes den 5 juni 2009, stöder Python 3 [13] ;
  • version 4.7, som släpptes den 14 januari 2010, stöder Qt 4.6 [14] ;
  • version 5.0, som släpptes den 17 juni 2013, stöder Qt 5.0 [15] .

Anmärkningsvärda program som använder PyQt

  • Cura [16] är en öppen källkodsapplikation för 3D-modeller för 3D-skrivare.
  • Electrum [17] är en populär bitcoin-kryptoplånbok med öppen källkod.
  • Arduino IDE är en implementering av Arduino på PyQt.
  • Jabbim  är ett plattformsoberoende snabbmeddelandeprogram med öppen källkod som använder XMPP-protokollet .
  • Eric IDE  - en integrerad utvecklingsmiljö för Python;
  • GNS3  är en grafisk nätverkssimulator.
  • Anki är ett program för att underlätta memorering av ord, uttryck och all annan information med hjälp av skilda upprepningar.
  • Caliber , en applikation för hantering av e-böcker
  • Dropbox , filvärd
  • fman , en filhanterare för flera plattformar
  • Kodos , Python Regular Expression Debugger
  • Leo , läskunnig programmeringsplanerare och redaktör
  • Ninja-IDE , en utbyggbar Python-utvecklingsmiljö med öppen källkod
  • OpenLP , ett program för textprojektion med öppen källkod
  • OpenShot , ett videoredigeringsprogram
  • Orange , ett ramverk för datautvinning och visualisering
  • Puddletag , en öppen källkod för plattformsoberoende ID3-taggredigerare
  • QGIS , gratis skrivbordsprogramvara för Geographic Information Systems (GIS).
  • qt-recordMyDesktop , Qt4-gränssnitt för recordMyDesktop
  • Spyder , Python Data Science IDE
  • TortoiseHg , GUI för Mercurials källhanteringsprogram (Hg)
  • Veusz , en vetenskaplig ritapplikation
  • qutebrowser [18] , en Vim-liknande webbläsare med ett minimalistiskt gränssnitt.

Applikation

PyQt är en produkt med en bred användarbas. Kommersiella användare av PyQt inkluderar sådana välkända företag som Disney , Dreamworks , Pixar , Industrial Light and Magic och Sony Pictures . Det finns mer än 200 kommersiella användare totalt (enligt uppgifter 2006) [9] .

Se även

Anteckningar

  1. 1 2 Riverbank  Computing . Nokias webbplats . Tillträdesdatum: 10 maj 2010. Arkiverad från originalet 4 mars 2012.
  2. 1 2 Vad är PyQt?  (engelska) . Pyqt webbplats. Tillträdesdatum: 10 maj 2010. Arkiverad från originalet 4 mars 2012.
  3. PyQt  Whitepaper . Pyqt webbplats. Tillträdesdatum: 10 maj 2010. Arkiverad från originalet 4 mars 2012.
  4. Eric Python IDE  . Eric IDE hemsida. Tillträdesdatum: 10 maj 2010. Arkiverad från originalet 4 mars 2012.
  5. Om PyQt  . Python Wiki. Tillträdesdatum: 10 maj 2010. Arkiverad från originalet 4 mars 2012.
  6. PyQt4  . _ Python Wiki. Tillträdesdatum: 10 maj 2010. Arkiverad från originalet 4 mars 2012.
  7. GUI Designer  . Nokia . Tillträdesdatum: 10 maj 2010. Arkiverad från originalet 4 mars 2012.
  8. ↑ Inledning - SIP  . Pyqt webbplats. Hämtad 14 augusti 2010. Arkiverad från originalet 4 mars 2012.
  9. 1 2 Phil Thompson talar om PyQt  . KDE.news. Hämtad 13 augusti 2010. Arkiverad från originalet 4 mars 2012.
  10. Licens  . _ Pyqt webbplats. Tillträdesdatum: 10 maj 2010. Arkiverad från originalet 4 mars 2012.
  11. PySide FAQ  . Pyside hemsida. Tillträdesdatum: 10 maj 2010. Arkiverad från originalet 4 mars 2012.
  12. 1 2 3 4 5 Mark Summerfield. Snabb GUI-programmering med Python och Qt . — 1:a. - Prentice Hall, 2008. - 648 sid. — ISBN 978-0132354189 .
  13. PyQt v4.5 släppt  . Pyqt webbplats. Tillträdesdatum: 10 maj 2010. Arkiverad från originalet 4 mars 2012.
  14. PyQt v4.7 släppt  . Pyqt webbplats. Tillträdesdatum: 10 maj 2010. Arkiverad från originalet 4 mars 2012.
  15. PyQt v5.0 släppt  . Pyqt webbplats. Hämtad 2 juli 2013. Arkiverad från originalet 2 juli 2013.
  16. Ultimaker Cura GitHub . Hämtad 28 maj 2020. Arkiverad från originalet 17 september 2020.
  17. Electrum Bitcoin GitHub . Hämtad 28 maj 2020. Arkiverad från originalet 10 maj 2020.
  18. qutebrowser . Hämtad 20 december 2021. Arkiverad från originalet 20 december 2021.

Litteratur

Länkar