2011-01-28 7 views
7

Sto usando PyQt e sto provando a promuovere un widget in QtDesigner. Sono in grado di farlo funzionare se si specifica il percorso completo del modulo, nel campo "File di intestazione", nel file che contiene la sottoclasse del mio widget.Promuovi PyQt Widget

C'è un modo migliore per promuovere un widget in QtDesigner su un widget PyQt senza dover specificare il percorso completo del modulo?

Ecco un esempio per illustrare spera di cosa sto parlando:

/PythonModuleRoot/Ui/MainUi.py

from PyQt4 import QtCore, QtGui, uic 
class MainUi(QtGui.QWidget): 
    def __init__(self): 
     QtGui.QWidget.__init__(self) 
     self.ui = uic.loadUi(os.path.join(os.path.dirname(__file__), 'MainUi.ui'), self) 

/PythonModuleRoot/Ui/CustomWidget.py

from PyQt4 import QtCore, QtGui, uic 
class CustomWidget(QtGui.QWidget): 
    def __init__(self, parent): 
     QtGui.QWidget.__init__(self, parent) 

/PythonModuleRoot/Ui/MainUi.ui

In MainUi.ui promuovo un widget s e il campo File di intestazione per: "PythonModuleRoot.Ui.CustomWidget".

+1

Hai risposto alla tua stessa domanda in una modifica. Perché non pubblicare la soluzione come risposta? [La pubblicazione di auto-risposte è incoraggiata qui.] (Http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/) – mizo

risposta

7

Ho capito, il mio codice attuale è leggermente diverso dall'esempio semplificato che ho dato. Il mio codice attuale è più simile a questo:

/PythonModuleRoot/Ui/MainUi.py 

/PythonModuleRoot/Ui/MainUi.ui 

/PythonModuleRoot/Ui/Widgets/CustomWidget.py 

Così ho solo bisogno di modificare il contenuto del file di intestazione di essere come MainUi sarebbe importare CustomWidget, così: "Widgets.CustomWidget". Questo articolo mi ha indirizzato nella giusta direzione: http://www.mail-archive.com/[email protected]/msg17893.html