2013-08-25 60 views
23

Esiste un modo per convertire un interfaccia utente formato con qtDesigner in una versione python da utilizzare senza disporre di un file aggiuntivo?Converti interfaccia utente pyQt in python

Sto usando Maya per questa interfaccia utente e la conversione di questo file dell'interfaccia utente in una versione python leggibile da implementare sarebbe davvero eccezionale!

+0

in pila: http://stackoverflow.com/questions/2398800/linking-a-qtdesigner-ui -file-to-python-pyqt –

risposta

35

È possibile utilizzare il comando pyuic4 sul guscio: pyuic4 input.ui -o output.py

+0

Come posso installare pyuic4? Sta dicendo che "pyuic4" non è riconosciuto, suppongo che devo installarlo? –

+0

È necessario installare Qt e PyQt (o Pyside) per avere lo strumento 'pyuic4' che convertirà il file ui in un file Python. – Frodon

+3

So che questa è una vecchia domanda, ma se qualcuno si chiedesse, installare pyuic4 su Ubuntu: 'sudo apt-get install pyqt4-dev-tools qt4-designer' –

2

Non sono sicuro che PyQt abbia uno script come questo, ma dopo aver installato PySide c'è uno script nella directory di script python "uic.py". È possibile utilizzare questo script per convertire un file .ui in un file .py:

python uic.py input.ui -o output.py -x 
+0

Lo faccio da maya o dalla riga di comando? –

+0

hai visto la mia risposta? –

+0

Su alcuni sistemi questo può essere chiamato pyside-uic ed essere eseguibile. A proposito, sì, sarebbe eseguito dalla riga di comando come viene utilizzato per qualsiasi sviluppo di app, non solo per Maya. – Ben

8

Se si utilizza Windows, la cartella PyQt4 non è in il percorso di default, si deve andare ad esso prima di provare a eseguirlo:

c:\Python27\Lib\site-packages\PyQt4\something> pyuic4.exe full/path/to/input.ui -o full/path/to/output.py 

o chiamare utilizzando il suo percorso completo

full/path/to/my/files> c:\Python27\Lib\site-packages\PyQt4\something\pyuic4.exe input.ui -o output.py 
0

Ho avuto di recente lo stesso problema. Dopo aver trovato il percorso corretto per il file pyuic4 usando il cercatore di file che ho eseguito:

C: \ Users \ ricckli.qgis2 \ python \ plugins \ qgis2leaf> C: \ OSGeo4W64 \ bin \ pyuic4 -o ui_q gis2leaf. py ui_qgis2leaf.ui

Come si può vedere il mio file ui è stata posta in questa cartella ...

QT Creator è stato installato separatamente e il file pyuic4 è stato posto lì con il programma di installazione OSGEO4W

1

È don' t installare PyQt4 con tutte le sue funzionalità secondarie, è sufficiente il pacchetto PyQt4 stesso. All'interno del pacchetto è possibile utilizzare il modulo pyuic.py ("C: \ Python27 \ Lib \ site-packages \ PyQt4 \ uic") per convertire il file Ui.

C: \ test> python C: \ Python27x64 \ Lib \ site-packages \ PyQt4 \ UIC \ pyuic.py -help

Otterrete tutte le opzioni elencate:

Usage: pyuic4 [options] <ui-file> 

Options: 
    --version    show program's version number and exit 
    -h, --help   show this help message and exit 
    -p, --preview   show a preview of the UI instead of generating code 
    -o FILE, --output=FILE 
         write generated code to FILE instead of stdout 
    -x, --execute   generate extra code to test and display the class 
    -d, --debug   show debug output 
    -i N, --indent=N  set indent width to N spaces, tab if N is 0 [default: 
         4] 
    -w, --pyqt3-wrapper generate a PyQt v3 style wrapper 

    Code generation options: 
    --from-imports  generate imports relative to '.' 
    --resource-suffix=SUFFIX 
         append SUFFIX to the basename of resource files 
         [default: _rc] 

Così il vostro comando sarà simile a questa:

C:\test>python C:\Python27x64\Lib\site-packages\PyQt4\uic\pyuic.py test_dialog.ui -o test.py -x 

si potrebbe anche usare percorsi di file completo al file per convertirlo.

Perché vuoi comunque convertirlo? Preferisco creare widget nel designer e implementarli tramite il file * .ui. Ciò rende molto più comodo modificarlo in seguito. È anche possibile scrivere i propri plugin per widget e caricarli in Qt Designer con pieno accesso. Avere il tuo ui codificato non lo rende molto flessibile.

Riutilizza molti dei miei ui non solo in Maya, anche per Max, Nuke, ecc. Se devi modificare qualcosa di specifico del software, dovresti provare ad ereditare la classe (con il file ui genitore) da un più globale punto di vista e patch o sovrascrivere i metodi che devi regolare. Ciò risparmia molto tempo di lavoro. Fammi sapere se hai altre domande a riguardo.

1

Il modo più veloce per convertire .ui in.py è da terminale:

pyuic4 -x input.ui -o output.py

Accertarsi di aver installato PyQt4-dev-tools.

1

Alla domanda è già stata data una risposta, ma se stai cercando una scorciatoia durante lo sviluppo, incluso questo nella parte superiore del tuo script python ti farà risparmiare un po 'di tempo ma soprattutto ti dimentichi di dover effettivamente effettuare la conversione.

import os #Used in Testing Script 
os.system("pyuic4 -o outputFile.py inpuiFile.ui") 
1

Per pyqt5 è possibile utilizzare

pyuic5 xyz.ui > xyz.py 

o

pyuic5 xyz.ui -o xyz.py