Questo articolo è stato originariamente pubblicato nel maggio 2016 ed è stato aggiornato con nuove informazioni.
Arriva un momento nel viaggio della maggior parte dei programmatori quando sono pronti a diramarsi oltre gli esempi di base e iniziare a costruire un’interfaccia grafica per il loro programma.
In Python, i passaggi per iniziare con la programmazione GUI non sono terribilmente complessi, ma richiedono all’utente di iniziare a fare alcune scelte., Per sua natura come un linguaggio di programmazione general purpose con interpreti disponibili in tutti i sistemi operativi comuni, Python deve essere abbastanza agnostico per quanto riguarda le scelte che presenta per la creazione di interfacce utente grafiche.
Fortunatamente, ci sono molte opzioni disponibili per i programmatori che cercano di creare un modo semplice per gli utenti di interagire con i loro programmi. Esistono collegamenti per diversi framework dell’interfaccia utente su una varietà di piattaforme, inclusi quelli nativi di Linux, Windows e Mac e molti che funzionano su tutti e tre.,
Prima di andare oltre, sii il tuo avvocato del diavolo per un momento e chiedi: Ha davvero senso che la tua applicazione abbia una tradizionale interfaccia utente grafica? Per alcuni programmi, la risposta è ovvia. Se la tua applicazione è intrinsecamente grafica ed è ottimizzata per o ha solo senso essere eseguita localmente su una singola macchina locale, allora sì, probabilmente dovresti considerare la creazione di una GUI desktop. Molte volte, questo è reso ovvio da ciò che stai progettando.
Ma per i programmi di uso generale, non contare né la riga di comando né un’interfaccia web., La riga di comando offre molti vantaggi-velocità, accesso remoto, riusabilità, scriptabilità e controllo—che possono essere più importanti per gli utenti dell’applicazione di un’interfaccia grafica, e ci sono molte librerie come Click, Cement e Cliff che rendono più facile progettare grandi programmi da riga di comando.
Allo stesso modo, un’interfaccia web, anche per un programma destinato ad essere eseguito localmente, potrebbe essere un’opzione da prendere in considerazione, in particolare se si pensa che i propri utenti potrebbero voler ospitare l’applicazione in remoto, e progetti come Django, Flask o Pyramid rendono tutto questo semplice., Puoi anche usare una libreria come pywebview per mettere un wrapper sottile attorno a un’applicazione Web in una finestra GUI nativa.
In alternativa, è possibile utilizzare un framework come Pyforms per creare un’esperienza coerente su Web, riga di comando e desktop, il tutto con una singola base di codice.
Sei ancora sicuro di voler creare una GUI? Grande, qui ci sono alcune fantastiche librerie open source per iniziare.,
PyQt, PySide e Qt per Python
PyQt implementa la popolare libreria Qt, e quindi se hai familiarità con lo sviluppo di Qt in un’altra lingua, forse dallo sviluppo di applicazioni native per KDE o un altro ambiente desktop basato su Qt, potresti già avere familiarità con Qt. Questo apre la possibilità di sviluppare applicazioni in Python che hanno un aspetto familiare su molte piattaforme, sfruttando gli strumenti e le conoscenze della grande comunità Qt.
Qt è ben consolidato nella comunità degli sviluppatori e ha strumenti che lo riflettono., Scrivere applicazioni Python intorno Qt significa avere accesso a QtCreator, che dispone di una modalità di progettazione per generare codice per il layout dell’applicazione.
PyQt ha una doppia licenza sia commerciale che GPL, non diversamente dal progetto Qt stesso, e la società principale che supporta PyQt offre una FAQ sulla licenza per aiutare a capire cosa questo significa per la tua applicazione.
Per un’altra opzione per usare le librerie Qt con Python, considera Qt per Python (comunemente noto come PySide2), disponibile sotto LPGL.,
Tkinter
Se ci fosse un singolo pacchetto che potrebbe essere chiamato il toolkit GUI “standard” per Python, sarebbe Tkinter. Tkinter è un wrapper attorno a Tcl/Tk, un’interfaccia grafica popolare e un abbinamento linguistico diffuso per la prima volta nei primi anni ‘ 90. Il vantaggio di scegliere Tkinter è il vasto numero di risorse, inclusi libri e esempi di codice, oltre a una vasta comunità di utenti che potrebbero essere in grado di aiutarti in caso di domande. Semplici esempi sono facili da iniziare e abbastanza leggibile.,
Tkinter è disponibile sotto la licenza Python, in cima alla licenza BSD di Tcl / Tk.
WxPython
WxPython porta la libreria GUI multipiattaforma wxWidgets dal suo nativo C++ a Python. WxPython sembra un po ‘ più nativo di Tkinter su diversi sistemi operativi perché utilizza i widget del sistema host per costruire una GUI. È abbastanza facile da iniziare e ha una comunità di sviluppatori in crescita. Potrebbe essere necessario raggruppare wxPython con le proprie applicazioni, oppure richiedere all’utente di installarlo da solo, in quanto non viene installato automaticamente con Python.,
WxPython utilizza la licenza libreria wxWindows del suo progetto padre, che è approved approvato.
Python GTK+ 3
Precedentemente noto come PyGTK, il progetto Python GTK+ 3 fornisce collegamenti Python agli oggetti GTK (windows, widget e così via). GTK + è notoriamente utilizzato come base per il desktop GNOME, ma è disponibile per applicazioni stand-alone su Linux, Windows e Mac. Con Python GTK+ 3, lo stesso framework è disponibile per i tuoi progetti Python.
Quando si utilizza Python GTK+ 3, è possibile utilizzare molti degli stessi strumenti di sviluppo creati per GTK+ stesso., In particolare, questo include Glade, un designer di interfaccia per le applicazioni GTK+. Le interfacce progettate in Glade vengono salvate come XML e utilizzate dall’oggetto GtkBuilder nel codice dell’applicazione, ma l’interfaccia utilizzata è drag-and-drop, rendendo facile creare un’interfaccia utente dinamica e reattiva senza dover tradurre ciò che vedi nella tua mente in codice di layout.
Kivy
Costruito con lo sviluppo rapido e dispositivi moderni in mente, Kivy è un toolkit per Linux (incluso il Raspberry Pi), Windows, Mac e Android., Il progetto è focalizzato su “interfacce utente innovative” ed è stato utilizzato per applicazioni multimediali, come le app per controller musicali per telefoni alle applicazioni di lavagna che occupano l’intera parete di una sala riunioni.
Kivy non ha un programma di layout visivo come QtCreator e Glade, ma utilizza il proprio linguaggio di progettazione per aiutarti ad associare il layout dell’interfaccia utente agli oggetti di codice. Ciò semplifica la compartimentazione (sia mentalmente che nel codice di layout) delle classi e delle funzioni nell’applicazione., Kivy ospita anche il Kivy Garden, un repository di widget e componenti aggiuntivi creati dagli utenti, quindi se stai pensando di creare qualcosa che Kivy stesso non fornisce, potresti che esista già nel Giardino.
Queste non sono le uniche scelte che avete a vostra disposizione, nemmeno da un colpo lungo. Per ulteriori opzioni, controlla la pagina “Programmazione GUI in Python” sul wiki ufficiale di Python Software Foundation, che elenca dozzine di altri strumenti. Sono disponibili soluzioni per associare Python a molte diverse librerie di widget e strumenti GUI come FLTK, FOX e molti altri., Mentre i principianti dovrebbero probabilmente evitare progetti che forniscono solo implementazioni parziali, o quelli non più mantenuti attivamente, ci sono molti buoni strumenti per una varietà di situazioni.
Molte delle opzioni là fuori sono per le applicazioni tradizionali che assumono l’aspetto finestra del loro ambiente desktop genitore, ma ci sono anche momenti in cui si potrebbe desiderare di fare qualcosa di completamente diverso, ad esempio, all’interno di un videogioco. Ci sono grandi librerie anche per queste situazioni, come pygame, pyglet e Panda3d.
Leave a Reply