2011-01-28 32 views
7

Estoy usando PyQt y tratando de promocionar un widget en QtDesigner. Puedo ponerlo en funcionamiento si especifico la ruta completa del módulo, en el campo "Archivo de encabezado", al archivo que contiene mi subclase de widgets.Promover PyQt Widget

¿Existe alguna forma mejor de promocionar un widget en QtDesigner a un widget PyQt sin tener que especificar la ruta completa del módulo?

He aquí un ejemplo para ilustrar lo que es de esperar que estoy hablando:

/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

En MainUi.ui promociono un widget y s et el campo Archivo de encabezado a: "PythonModuleRoot.Ui.CustomWidget".

+1

Ha respondido su propia pregunta en una edición. ¿Por qué no publicar su solución como una respuesta en su lugar? [La publicación de auto respuestas se fomenta aquí.] (Http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/) – mizo

Respuesta

7

Lo entendí, mi código real es ligeramente diferente que el ejemplo simplificado que di. Mi código actual es de la misma familia:

/PythonModuleRoot/Ui/MainUi.py 

/PythonModuleRoot/Ui/MainUi.ui 

/PythonModuleRoot/Ui/Widgets/CustomWidget.py 

Así que sólo tenía que cambiar el contenido del archivo de cabecera a ser cómo MainUi importaría CustomWidget, así: "Widgets.CustomWidget". Este artículo me indicó la dirección correcta: http://www.mail-archive.com/[email protected]/msg17893.html