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] .
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] .
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 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 ä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] .
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.
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] .
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] .
Qt | |
---|---|
Teknologi | |
Verktyg | |
Bindningar | |
Relaterade ämnen |
Pytonorm | |
---|---|
gemenskap | |
Genomföranden | |
Övrig |
|
Gratis och öppen källkod | |
---|---|
Huvudsaken |
|
gemenskap |
|
Organisationer | |
Licenser | |
Problem | |
Övrig |
|
|
med GUI-element | Verktygssatser (uppsättningar)|||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
låg nivå |
| ||||||||||||||||||||||||||
hög nivå |
|