Ricerca…


Osservazioni

Cos'è wxPython

In poche parole wxPython è un insieme di collegamenti alla libreria della GUI della piattaforma Cross C ++ di wxWidgets .

Ok, cos'è wxWidgets

La libreria wxWidgets fornisce una serie di astrazioni gratuite, gratuite e open source per i vari elementi della GUI in modo che i controlli nativi siano ancora utilizzati, laddove disponibili, mantenendo l'aspetto, la sensazione e la velocità nativi. Come tale fornisce un'astrazione per la creazione di GUI e una serie di altre utilità in una piattaforma che consente agli sviluppatori di creare applicazioni per Windows, Mac OS X, Linux e altre piattaforme utilizzando un unico codice di base. wxWidgets è stato avviato nel 1992 e si può vedere una storia dettagliata qui . La libreria wxWidgets è distribuita sotto la licenza wxWindows, che si basa sulla L-GPL ma con una clausola di eccezione . La clausola di eccezione consente di collegare la propria applicazione in modo dinamico o statico a wxWidgets senza la necessità di distribuire l'origine per la propria applicazione. In altre parole, è possibile utilizzare wxWidgets per progetti gratuiti o commerciali , senza alcun costo . La licenza ti incoraggia a restituire i miglioramenti apportati alla libreria wxWidgets stessa.

I punti salienti, nota che wxWidgets comprende centinaia di classi per lo sviluppo di applicazioni multipiattaforma :

  • Layout della finestra usando Sizers
  • Contesti dispositivo (insieme a penne, pennelli e caratteri)
  • Sistema completo di gestione degli eventi
  • Visualizzatore della Guida HTML
  • Riproduzione audio e video
  • Supporto Unicode e Internazionalizzazione
  • Architettura documento / vista
  • Stampa Archiecture
  • Sockets
  • multithreading
  • Manipolazione di file e directory
  • Guida online e sensibile al contesto
  • Rendering HTML
  • Contenitori di base
  • Caricamento, salvataggio, disegno e manipolazione di immagini
  • Data-ora libreria e timer
  • Gestione degli errori
  • Appunti e trascina-e-rilascia

Si noti che alcune di queste funzionalità, ad es. Il threading, non sono in realtà relative alla GUI, ma forniscono un'utile astrazione multipiattaforma in modo che, nel caso del threading, ad esempio, un set di codice dell'applicazione funzioni su qualsiasi piattaforma supportata.

Per molti anni la libreria wxWidgets ha prodotto 4 build separati, oltre alle build di debug di un set di codice sorgente, librerie statiche e dinamiche create per ASCII e Unicode. Di solito è disponibile pre-costruito nelle varianti più comuni e come codice sorgente da compilare con le varie opzioni per l'ambiente di destinazione e con la catena di strumenti C ++ degli sviluppatori con numerose catene di strumenti supportate.

I collegamenti Python per questa libreria e alcune aggiunte formano wxPython.

Torna a Cosa è wxPython, (cosa mi dà)?

wxPython offre a uno sviluppatore un modo per beneficiare di una libreria GUI multipiattaforma, con una licenza chiara, e allo stesso tempo offre i vantaggi di Python. Come wxWidgets e Python wxPython è gratuito, gratuito e open source e disponibile per l'uso e la distribuzione in progetti gratuiti e commerciali senza il conseguente obbligo di distribuire il codice sorgente .

  • Suite completa per la GUI, inclusi (ma non limitati a):
    • Windows (incluso MDI Windows)
    • Wizards
    • Cornici e MiniFrames
    • Dialoghi, standard, avanzati e personalizzati
    • Controlli di visualizzazione di libri, alberi, griglie e dati
    • Calibri, cursori, filatori, animazioni, appunti, drag & drop
    • Supporto per HTML, PDF e Image viewer
    • I componenti della GUI possono essere posizionati in modo assoluto, ma si consiglia vivamente di utilizzare un layout basato su sizer che supporti il ​​dimensionamento automatico, ecc.
  • Cross Platform - Supporta le GUI per Windows, OS-X e Linux con un singolo codice base senza istruzioni condizionali nel codice
  • Velocità nativa, aspetto e tatto.
  • Rapido prototipo, test e debug - ricorda che questo è python
  • Esegui e modifica campioni di quasi tutto nel pacchetto demo.
  • Licenza chiara per uso gratuito anche in prodotti commerciali.
  • Se necessario, la GUI Python può essere nuovamente sottoposta a refactoring in una GUI wixWidgets in C ++ poiché la sta già utilizzando.
  • Community di utenti e sviluppatori ampia , attiva e utile sia su StackOverflow che sulle mailing list .

Si noti che, laddove Python stesso fornisce un meccanismo multipiattaforma per implementare le funzioni di utilità di wxWidgets, inserendo nuovamente un buon esempio , viene intenzionalmente omesso da wxPython.

wxPython ha anche una suite di dimostrazioni molto ampia che può essere eseguita, testata e modificata all'interno del pacchetto Documenti e Demo.

Sapori di wxPython

ASCII vs Unicode :

Per molti anni, come con wxWidgets , gli sviluppatori dovevano scegliere tra le build ASCII e Unicode e necessitare di una build per la loro specifica versione di python e le opzioni a 32/64 bit. A proposito di wxPython 2.8.9, la sola build ASCII di wxPython è stata eliminata, quindi il supporto Unicode è sempre disponibile.

Classic vs. Phoenix :

Dal momento che wxPython 3.0.0 è esistita la build "Classic" rilasciata di wxPython e una build attualmente inedita di Phoenix. La build classica tende a rimanere indietro rispetto alle build wxWidgets con gli stessi numeri e il pacchetto di documentazione è il C ++ - è disponibile per il download per varie piattaforme, (vedi Installazione di Classic ), nel caso di Windows come un programma di installazione eseguibile. I binding Phoenix, generati in gran parte automaticamente, dovrebbero seguire più da vicino le build di wxWidgets e includere anche la documentazione specifica di wxPython - è costruibile da build di origine o di notte in quanto è possibile ottenere le ruote usando pip , (vedi Installazione di Phoenix ).

In wxPython ma non in wxWidgets

wxPython estende la libreria wxWidgets con un numero di funzionalità, le seguenti sono solo alcune, che non sono disponibili in wxWidgets:

Schermate dimostrative su Win10

La demo wxPython con tutti i rami chiusi: inserisci la descrizione dell'immagine qui Una delle aggiunte recenti: inserisci la descrizione dell'immagine qui Uno degli AGW (Advanced Generic Widgets): inserisci la descrizione dell'immagine qui

Installazione di wxPython Phoenix

wxPython Phoenix è l'ultima versione di wxPython, (attualmente settembre 2016 senza una versione ufficiale). Supporta sia Python 2 che Python 3. Puoi scaricare una build di istantanee (cioè una ruota Python) per la tua piattaforma e la versione di Python qui .

wxPython Phoenix utilizza un meccanismo ampiamente automatizzato per generare entrambi i collegamenti Python per la libreria wxWidgets e la documentazione. La documentazione di Phoenix wxPython è generata appositamente per se stessa utilizzando Sphinx . Ciò aumenta la chiarezza rispetto alla documentazione C ++ della build classica, che include molti overload che non sono disponibili in wxPython.

Python e pip devono essere installati prima di poter installare wxPython Phoenix.

Puoi usare pip per installare la versione Phoenix di wxPython. Ecco il metodo consigliato al momento:

python -m pip install --no-index --find-links=http://wxpython.org/Phoenix/snapshot-builds/ --trusted-host wxpython.org wxPython_Phoenix

Quando si utilizza questo comando, pip installerà anche wxWidgets . Questo comando pip complesso diventerà probabilmente 'pip install wxpython' quando Phoenix verrà ufficialmente rilasciato.

Nota: wxPython Phoenix è attualmente in versione beta e non ha tutti i widget della versione Classic.

Installazione di wxPython Classic

wxPython Classic è una versione di Python 2 della libreria wxPython. La generazione dei binding Python richiede un gran numero di interventi manuali e la documentazione è semplicemente la documentazione di wxWidgets che contiene alcune annotazioni sui meccanismi di wxPython in quanto normalmente c'è un ritardo di settimane o mesi tra una nuova versione di wxWidgets e la versione corrispondente di wxPython .

Vai alla pagina di download sul sito web wxPython per vedere se esiste già una versione di wxPython che puoi scaricare per la tua piattaforma.

L'ultima versione di Classic è 3.0.2.0

finestre

Sul sito Web sono presenti programmi di installazione per Python 2.6 e 2.7 per piattaforme Windows a 32 bit e 64 bit. Basta scaricare uno di questi ed eseguirli per installarlo.

Nota: assicurati di scaricare un programma di installazione wxPython per il Python corretto che hai installato. Ad esempio, se hai Python 2.7 a 32 bit, allora vuoi un programma di installazione wxPython a 32 bit

Mac

Se hai OSX 10.5 o successivo , dovrai scaricare e installare la versione Cocoa di wxPython. La versione Cocoa supporta anche Mac a 64 bit.

Se hai un Mac con una versione di OSX inferiore a 10.5 , allora ti consigliamo di costruire il Carbon .

Linux

La prima cosa da verificare se il gestore di pacchetti della tua piattaforma Linux (ie yum, apt-get, etc) per vedere se ha una versione di wxPython che puoi installare. Sfortunatamente, molti pacchetti Linux per wxPython sono per la versione 2.8.12.1 invece di 3.0.2.0. Se il tuo gestore di pacchetti non ha la versione più recente, probabilmente dovrai crearlo da solo.

Ci sono le istruzioni di compilazione per 3.0.2.0-Classic qui

Ciao mondo

Un modo semplice per creare un programma Hello World :

import wx
app = wx.App(redirect=False)
frame = wx.Frame(parent=None, id=wx.ID_ANY, title='Hello World')
frame.Show()
app.MainLoop()

Produzione:

Ciao uscita mondiale

Un esempio più tipico sarebbe quello di sottoclasse wx.Frame :

import wx

class MyFrame(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, title='Hello World')
        self.Show()

if __name__ == '__main__':
    app = wx.App(redirect=False)
    frame = MyFrame()
    app.MainLoop()

Questo può anche essere riscritto per usare il super di Python:

import wx  

class MyFrame(wx.Frame):
        
    def __init__(self, *args, **kwargs):
        """Constructor"""
        super(MyFrame, self).__init__(*args, **kwargs)
        self.Show()

if __name__ == '__main__':
    app = wx.App(False)
    frame = MyFrame(None, title='Hello World')
    app.MainLoop()

Cos'è una serie di versioni wxPython?

Il progetto wxWidgets ha adottato il modello di rilascio utilizzato dal progetto Kernel Linux in cui sono presenti serie alternative di rilasci in cui un set è considerato "stabile" e il set successivo è considerato "sviluppo". Per wxWidgets "stable" e "development" non si riferiscono a bug, ma alla stabilità dell'API e alla retrocompatibilità.

  • Stabile : per tutta la durata della serie le API esistenti non vengono modificate, sebbene possano essere aggiunti nuovi metodi di classe non virtuali e simili. La compatibilità binaria delle librerie C ++ viene mantenuta non consentendo modifiche che modificano la dimensione o il layout in memoria delle classi e delle strutture. Questo può e spesso impone limitazioni su quali tipi di miglioramenti o correzioni di bug possono essere eseguiti in una serie di release stabile, tuttavia questo riguarda solo il livello C ++ perché in Python il retrocompatibile ha una connotazione leggermente diversa.

  • Sviluppo : Lo scopo principale della serie di rilasci di sviluppo è di aggiungere nuove funzionalità o correggere problemi che non potrebbero essere corretti in una serie stabile a causa di problemi di compatibilità binaria, il tutto nel tentativo di creare la prossima serie stabile. Quindi, per la durata delle serie di sviluppo esistenti, le API possono essere modificate o rimosse secondo necessità, sebbene la maggior parte delle volte la compatibilità di livello C ++ sia mantenuta tramite funzioni o macro sovraccaricate obsolete, ecc. Per wxPython questo spesso significa che ci sarà essere incompatibilità a livello di sorgente perché non ci sono sovraccarichi o macro e, per supportare la nuova versione dell'API, a volte la vecchia versione deve essere rimossa.

A causa dei problemi di compatibilità binaria, l'ultima versione di sviluppo di wxWidgets / wxPython può essere spesso meno problematica rispetto all'ultima versione dell'ultima serie di versioni stabili. Tuttavia esiste il compromesso che le API potrebbero cambiare o evolvere tra le versioni della serie di sviluppo.

Come funzionano i numeri di versione?

Per le versioni wxPython utilizza un numero di versione a 4 componenti. Mentre questo sembra molto simile a come i numeri di versione sono usati in altri progetti Open Source, ci sono alcune sottili differenze. Quindi per alcune versioni di ABCD è possibile dedurre quanto segue:

  1. Release Series : i primi due componenti del numero di versione ( AB ) rappresentano la serie di rilascio e se il componente B è un numero pari, allora è una serie stabile, se è un numero dispari, allora è una serie di versioni di sviluppo. Ad esempio, 2.4, 2.6 e 2.8 sono stabili e l'API è più o meno congelata all'interno di ciascuna serie e 2.3, 2.5 e 2.7 sono sviluppo e l'API e la funzionalità possono cambiare o evolvere secondo necessità.

A causa di questo ci possono essere cambiamenti abbastanza grandi tra una serie stabile alla successiva (per esempio da 2,4 a 2,6) e questo spesso spazza via la gente perché in altri progetti le modifiche di quella portata avrebbero causato la modifica del primo componente del numero di versione. Invece dovresti pensare alla combinazione di AB come il numero maggiore della versione.

  1. Numero di rilascio : il terzo componente del numero di versione (C) rappresenta una delle versioni di una serie di versioni. Ad esempio, 2.5.0, 2.5.1, 2.5.2, 2.5.3 ... sono tutti i rilasci della serie di versioni 2.5. (E poiché in questo caso si tratta di una serie di sviluppo, l'API e la funzionalità di 2.5.3 si sono evolute in luoghi diversi rispetto a 2.5.0.) Le versioni di wixWidgets di C ++ di solito si fermano qui e vengono prodotte solo le versioni di ABC.

  2. Numero di rilascio parziale o versione di wxPython: il quarto componente del numero di versione (D) viene utilizzato per rappresentare una sottorelocazione o rilasci incrementali tra le versioni ufficiali di wxWidgets. Queste versioni includono correzioni per bug wxWidgets che wxPython potrebbe aver rivelato, o miglioramenti minori importanti per wxPython. Questo non è uno snapshot arbitrario di wxWidgets, ma piuttosto una versione testata del codice con correzioni e miglioramenti non ancora disponibili da wxWidgets tranne che dal repository del codice sorgente.

Fonte: https://wiki.wxpython.org/ReleaseSeries



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow