Domanda

Voglio scrivere un'applicazione C ++ con Qt, ma costruire un primo prototipo utilizzando Python e poi gradualmente sostituire il codice Python con C ++.

E 'questo l'approccio giusto, e quali strumenti (attacchi, generatori di legame, IDE) dovrei usare?
Idealmente, tutto dovrebbe essere disponibile nei repository di Ubuntu in modo da non devono preoccuparsi di versioni incompatibili o vecchie e hanno tutto allestito con un semplice aptitude install.
C'è qualche documentazione completa su questo processo o devo imparare ogni singolo componente, e se sì, quali?

In questo momento ho più scelte da fare: Qt Creator, a causa del completamento automatico bello e integrazione Qt.
Eclipse, in quanto offre supporto sia per C ++ e Python. Eric (non ancora utilizzato) Vim

PySide come di lavoro con CMake e Boost.Python, quindi teoricamente si farà sostituire il codice python più facile. PyQt come è più ampiamente usato (più sostegno) ed è disponibile come pacchetto Debian.

Modifica : Come dovrò distribuire il programma per diversi computer, il C ++ - soluzione richiederebbe 1-5 file (il programma e alcuni file di libreria se sto collegandolo staticamente), utilizzando Python avrei dovuto costruire PyQt / PySide / SIP / qualunque cosa su ogni piattaforma e spiegare come installare Python e tutto il resto.

È stato utile?

Soluzione

  

Voglio scrivere un'applicazione C ++ con Qt, ma costruire un primo prototipo utilizzando Python e poi gradualmente sostituire il codice Python con C ++. È questo l'approccio giusto?

Questo dipende dagli obiettivi. Dopo aver fatto entrambe le cose, vi consiglio di rimanere con Python per quanto possibile e ragionevole. Anche se ci vuole un po 'di disciplina, è molto possibile scrivere estremamente grandi applicazioni in Python. Ma, come si trovano gli hotspot e le cose che possono essere meglio gestiti in C ++, si può certamente porta parti pertinenti al C ++.

  

C'è una documentazione completa su questo processo o devo imparare ogni singolo componente, e se sì, quali?

Ecco cosa mi consiglia per i vari pezzi:

EDITOR / IDE : Utilizzare qualsiasi editor / IDE sei a tuo agio con, ma consigliamo vivamente uno che supporti il ??refactoring. Se sei a tuo agio con Eclipse, usarlo. Se si vuole andare soprattutto il percorso C ++ e non siete troppo familiarità con qualsiasi editor, si potrebbe essere meglio con QtCreator. Eric è estremamente un buon IDE Python con il supporto per il refactoring, a meno che non si sta andando ad essere facendo un sacco di C ++, date un'occhiata a questo. Ancora meglio, il suo codice sorgente è un esempio di buon utilizzo e pratiche PyQt.

PROCESS :

Il breve riassunto:

  1. Scrivi la tua applicazione in Python utilizzando PyQt
  2. Quando identificato come hotspot, convertito disaccoppiato classi Python a C ++
  3. Crea associazioni per quelle classi che utilizzano SIP
  4. Importa le librerie appena definiti in Python al posto delle loro controparti Python
  5. Godetevi l'aumento di velocità

Dettagli generali:

Scrivi l'applicazione in Python utilizzando PyQt. Fate attenzione a mantenere una buona delle preoccupazioni in modo che quando hai bisogno di pezzi di porta a C ++ che saranno separati dalle loro dipendenze. Quando finalmente bisogno di porto qualcosa da C ++, scrivere in C ++ / Qt e quindi creare associazioni per utilizzando SIP . SIP ha un riferimento buon manuale sul processo, e si dispone di tutti PyQt come un esempio.

Implementazione :

C ++ - Per molte applicazioni le dipendenze sono sufficientemente semplice che non è troppo difficile creare un programma di installazione utilizzando uno strumento come di NullSoft Installer o InnoSetup .

Python / PyQt - applicazioni PyQt sono un po 'più difficile da installare a causa della dipendenza da Python e la sua dipendenza dalla presenza delle librerie Qt. Una persona ha documentato i suoi sforzi su questo post a ArsTechnica . py2exe funziona abbastanza bene su Windows e dovrebbe funzionare bene. IME, freeze.py , che viene fornito con la sorgente Python, a volte ha dei problemi che determinano quali librerie condivise sono veramente necessari e, a volte, finiscono per creare un binario le cui dipendenze non sono presenti. py2app può essere fatto per il lavoro su Mac OS X .

Ma il peggio , tuttavia, è la concessione in licenza PyQt / Qt. Se si sta sviluppando un'applicazione commerciale, è necessario disporre di un PyQt commerciale (e Qt) di licenza e fare in modo di evitare che gli utenti di facilmente modificare l'origine o in altro modo la scrittura di codice contro l'API PyQt / Qt a causa delle restrizioni di licenza . A causa di ciò, l'autore PyQt ha creato uno strumento chiamato ID fornitore (anche se ha un Python licenza). All'interno ID fornitore è uno strumento chiamato SIB che può essere utilizzato per creare un eseguibile, che dipende solo l'interprete Python. Ma, se avete intenzione di andare fino a questo punto, si potrebbe desiderare di installare un personalizzato Python insieme con l'applicazione.

NEGAZIONE : Non ho usato PySide a tutti, così ho 'non sono sicuro come si confronta con PyQt. Inoltre, nota il seguente avvertimento sul loro sito web:

  

PySide è un lavoro in corso e non è ancora adatto per lo sviluppo di applicazioni che richiedono stabilità a livello di produzione.

Ma, con una nota positiva, che intendono, almeno per la versione iniziale di "mantenere la compatibilità con le API PyQt." Quindi, a parte il C ++ binding, si potrebbe facilmente passare tra i due in seguito.

Altri suggerimenti

Se sono solo imparare Qt e vuole sfruttare la velocità di prototipazione che Python vi dà, allora vi consiglio di effettuare un progetto di esempio utilizzando PyQt. Come hai detto, c'è un pacchetto Debian, in modo che siano solo un semplice apt-get lontano dal fare la vostra prima applicazione.

Io personalmente uso gVim come il mio editor di Python / Qt, ma si può davvero utilizzare qualsiasi editor di Python-friendly senza troppi problemi. Mi è piaciuto WingIDE e hanno completamento automatico per Qt, ma una volta che si sorseggiare dalla vim Kool-Aid è difficile passare.

direi che PySide è del 95% + compatibile con PyQt e la licenza LPGL è bello, ma se si sta solo cercando di prototipo la vostra prima applicazione Qt, quindi non credo che ci sia una vera ragione per usare PySide. Anche se, mi piace la documentazione PySide meglio, si può anche semplicemente utilizzare e sostituire tutti i riferimenti di libreria con PyQt.

A seconda della complessità dell'applicazione che si sta costruendo, potrebbe essere meglio per solo iniziare da zero con una versione C ++ piuttosto che cercare di fare un po SIP refactoring magia nera. Una volta che avete una solida comprensione del framework Qt, si dovrebbe essere in grado di passare tra il binding Python C ++ e abbastanza facilmente.

I richiama mockup dell'interfaccia utente prima di iniziare a prototipi di codice. Ecco alcuni vantaggi:

  • Più rapido di codifica prototipi in quanto non v'è alcuna programmazione coinvolti

  • Rapidamente widget di riempimento, come tavoli e alberi, con dati

  • Aggiungi descrizioni e le note ai vostri schermi

  • integrare facilmente mockup in documenti di specifica, senza dover schermi di cattura

  • Convalida UI concetti di design prima di implementare

Ci sono un sacco di strumenti che possono aiutare a farlo, ma se avete intenzione di usare Qt, MockupUI maggio essere una buona scelta in quanto rende oggetti Qt con stili nativi per Windows 7,8 o 10 che rende il tuo look mockup più realistico.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top