I think you can do something like this:

>>> import PyQt4.QtGui as gui
>>> def factory(name):
...     def spam(): pass
...     def yam(): pass
...     return type(name, (gui.QWidget,),{'spam':spam, 'yam': yam})
...
>>> MyClass = factory('MyClass')
>>> MyClass.__mro__
(<class '__main__.MyClass'>, <class 'PyQt4.QtGui.QWidget'>, <class 'PyQt4.QtCore.QObject'>, <type 'sip.wrapper'>, <class 'PyQt4.QtGui.QPaintDevice'>, <type 'sip.simplewrapper'>, <type 'object'>)

On 08/09/11 23:33, Daniel Goertzen wrote:
Does pyqt provide a way to override the class name when deriving a QObject based class?

An example of why this is wanted:

def my_widget_class_factory(...):
   class temp(QWidget):
      ...(dynamically generate class attributes and methods)
   return temp

All classes generated by the above function will come back with className() as "temp". This causes headaches for Designer.

I know I can add a metaclass to mangle the class name, but I was wondering there was an easier way (ie, does QObject's metaclass provided a way to rename the class?)

Thanks,
Dan.


_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to