Dit artikel is oorspronkelijk gepubliceerd in Mei 2016 en is bijgewerkt met nieuwe informatie.
Er komt een moment in de reis van de meeste programmeurs wanneer ze klaar zijn om te vertakken langs de basisvoorbeelden en beginnen met het bouwen van een grafische interface voor hun programma.
in Python zijn de stappen om te beginnen met GUI programmeren niet erg complex, maar ze vereisen wel dat de gebruiker een aantal keuzes gaat maken., Door zijn aard als een algemene programmeertaal met tolken beschikbaar over elk gemeenschappelijk besturingssysteem, Python moet vrij agnostisch zijn over de keuzes die het presenteert voor het maken van grafische gebruikersinterfaces.
gelukkig zijn er veel opties beschikbaar voor programmeurs die op zoek zijn naar een eenvoudige manier voor gebruikers om te communiceren met hun programma ‘ s. Bindingen bestaan voor verschillende UI frameworks op verschillende platforms, waaronder die van Linux, Windows en Mac, en veel die werken op alle drie.,
voordat u verder gaat, moet u even uw eigen advocaat van de duivel zijn en vragen: heeft het echt zin dat uw applicatie überhaupt een traditionele grafische gebruikersinterface heeft? Voor sommige programma ‘ s ligt het antwoord voor de hand. Als uw applicatie inherent grafisch is, en is geoptimaliseerd voor of gewoon zinvol is om lokaal te worden uitgevoerd op een enkele lokale machine, dan ja, je zou waarschijnlijk moeten overwegen het bouwen van een desktop GUI. Vaak wordt dit duidelijk gemaakt door wat je ontwerpt.
maar voor algemene programma ‘ s, Tel noch de opdrachtregel, noch een webinterface af., De opdrachtregel biedt vele voordelen-snelheid, toegang op afstand, herbruikbaarheid, scripteerbaarheid en controle—die belangrijker kunnen zijn voor de gebruikers van uw toepassing dan een grafische interface, en er zijn veel bibliotheken zoals Click, Cement en Cliff die het gemakkelijker maken om grote opdrachtregelprogramma ‘ s te ontwerpen.
Op dezelfde manier kan een webinterface, zelfs voor een programma bedoeld om lokaal te draaien, een optie zijn die het overwegen waard is, vooral als je denkt dat je gebruikers je applicatie op afstand willen hosten, en projecten zoals Django, Flask of Pyramid maken dit allemaal eenvoudig., Je kunt zelfs een bibliotheek als pywebview gebruiken om een dunne wrapper rond een webapplicatie te plaatsen in een native GUI venster.
afwisselend kunt u een framework zoals Pyforms gebruiken om een consistente ervaring op te bouwen op het web, de opdrachtregel en het bureaublad, allemaal met een enkele codebasis.
weet u nog steeds zeker dat u een GUI wilt bouwen? Geweldig, hier zijn een paar fantastische open source bibliotheken om je op weg te helpen.,
PyQt, PySide en Qt voor Python
PyQt implementeert de populaire Qt-bibliotheek, en dus als u bekend bent met Qt-ontwikkeling in een andere taal, misschien door het ontwikkelen van native applicaties voor KDE of een andere Qt-gebaseerde desktopomgeving, bent u misschien al bekend met Qt. Dit opent de mogelijkheid om toepassingen in Python te ontwikkelen die een vertrouwde look en feel hebben op vele platforms, terwijl ze profiteren van de tools en kennis van de grote Qt-gemeenschap.
Qt is goed ingeburgerd in de ontwikkelaarsgemeenschap en heeft tooling die dat weerspiegelt., Het schrijven van Python-toepassingen rond Qt betekent dat u toegang hebt tot QtCreator, die een ontwerpmodus heeft om code te genereren voor de lay-out van uw toepassing.
PyQt is dubbel gelicentieerd onder zowel een commerciële als GPL licentie, niet in tegenstelling tot Qt project zelf, en het primaire bedrijf dat PyQt ondersteunt biedt een licentie FAQ om te helpen begrijpen wat dit betekent voor uw toepassing.
voor een andere optie om Qt-bibliotheken met Python te gebruiken, overweeg Qt voor Python (algemeen bekend als PySide2), beschikbaar onder de LPGL.,
Tkinter
als er één pakket was dat de “standaard” GUI toolkit voor Python zou kunnen worden genoemd, zou het Tkinter zijn. Tkinter is een wrapper rond Tcl/ Tk, een populaire grafische interface en taal koppelen eerst populair in de vroege jaren 90. het voordeel van het kiezen van Tkinter is het enorme aantal middelen, waaronder boeken en code monsters, evenals een grote gemeenschap van gebruikers die in staat zijn om u te helpen als u vragen hebt. Eenvoudige voorbeelden zijn gemakkelijk aan de slag te gaan met en vrij menselijk leesbaar.,
Tkinter is beschikbaar onder de Python-licentie, bovenop de BSD-licentie van Tcl / Tk.
WxPython
WxPython brengt de wxWidgets cross-platform GUI bibliotheek van zijn eigen c++ naar Python. WxPython ziet er een beetje meer native dan Tkinter over verschillende besturingssystemen, omdat het gebruik maakt van de host systeem widgets om een GUI te construeren. Het is vrij gemakkelijk om te beginnen met zo goed, en heeft een groeiende Ontwikkelaar gemeenschap. Mogelijk moet u wxPython bundelen met uw toepassingen, of anders vereisen dat de gebruiker om het te installeren op hun eigen, omdat het niet automatisch wordt geïnstalleerd met Python.,
WxPython gebruikt de wxWindows Library-licentie van zijn moederproject, die OSI-goedgekeurd is.
Python GTK + 3
voorheen bekend als PyGTK, biedt het Python GTK + 3 project Python-bindingen aan GTK-objecten (windows, widgets, enzovoort). GTK+ wordt het beroemdst gebruikt als de basis voor het GNOME-bureaublad, maar het is beschikbaar voor stand-alone toepassingen op Linux, Windows en Mac. Met Python GTK + 3 is hetzelfde framework beschikbaar voor je Python projecten.
wanneer u Python GTK + 3 gebruikt, kunt u veel van dezelfde ontwikkeltools gebruiken die voor GTK+ zelf zijn gemaakt., Dit geldt vooral voor Glade, een interface-ontwerper voor GTK + – toepassingen. Interfaces ontworpen in Glade worden opgeslagen als XML en gebruikt door de GtkBuilder object in uw applicatie code, maar de interface die u gebruikt is drag-and-drop, waardoor het gemakkelijk is om een dynamische en responsieve UI te maken zonder te vertalen wat je ziet in je geest in lay-out code.
Kivy
gebouwd met snelle ontwikkeling en moderne apparaten in het achterhoofd, Kivy is een toolkit voor Linux (inclusief de Raspberry Pi), Windows, Mac en Android., Het project is gericht op” innovatieve user interfaces”, en het is gebruikt voor multimedia-toepassingen, zoals muziek controller apps voor telefoons om whiteboarding toepassingen die de hele muur van een vergaderzaal te nemen.
Kivy heeft geen visueel opmaakprogramma zoals QtCreator en Glade, maar het gebruikt zijn eigen ontwerptaal om u te helpen UI-opmaak te associëren met codeobjecten. Dit maakt het voor u gemakkelijk om (zowel mentaal als in de lay-Outcode) de klassen en functies in uw applicatie te compartimenteren., Kivy host ook de Kivy Garden, een repository van door de gebruiker gemaakte widgets en add-ons, dus als je denkt aan het creëren van iets dat Kivy zelf niet biedt, kunt u het al in de tuin bestaat.
Dit zijn niet de enige keuzes die je tot je beschikking hebt, zelfs bij lange na niet. Voor meer opties, kijk op de” GUI programmeren in Python ” pagina op de officiële Python Software Foundation wiki, die tientallen andere tools bevat. Er zijn oplossingen beschikbaar om Python te binden aan veel verschillende widgetbibliotheken en GUI-tools zoals FLTK, FOX en vele anderen., Terwijl beginners waarschijnlijk moeten voorkomen dat projecten die slechts gedeeltelijke implementaties, of die niet meer actief onderhouden, er zijn tal van goede tools voor een verscheidenheid van situaties.
veel van de opties die er zijn zijn voor traditionele toepassingen die de window look en feel van hun bovenliggende bureaubladomgeving aannemen, maar er zijn ook momenten waarop u iets heel anders wilt doen, bijvoorbeeld in een videospel. Er zijn ook grote bibliotheken voor deze situaties, zoals pygame, pyglet en Panda3d.
Leave a Reply