[PySide] QtUiTools.QUiLoader crash with custom widget

Stefan pyside at damp.homeip.net
Mon Apr 30 15:58:36 CEST 2012


Hi,

I'm trying to create a QMainWindow in the Designer and load the ui file 
dynamically with QUiLoader in pyside 1.1.0. When I don't register any 
custom types it works, but obviously fails to create my derived class. 
When I register them it crashes. Here's a small example that crash for 
me on windows running python 2.7 and pyside 1.1.0:

from PySide import QtCore, QtGui, QtUiTools
import sys

class MyWidget(QtGui.QWidget):
     def __init__(self, parent=None):
         super(MyWidget, self).__init__(parent)

if __name__ == '__main__':
     application = QtGui.QApplication(sys.argv)

     loader = QtUiTools.QUiLoader()
     loader.registerCustomWidget(MyWidget)
     print loader.availableWidgets()
     print loader.createWidget('QLabel')
     print loader.createWidget('MyWidget')

Running this prints the following:

[u'AnalogClock', u'CompositionRenderer', u'GradientEditor', 
u'GradientRendererEx
', u'MultiPageWidget', u'MyWidget', u'PathDeformRendererEx', 
u'PathStrokeRendere
rEx', u'Phonon::SeekSlider', u'Phonon::VideoPlayer', 
u'Phonon::VolumeSlider', u'
QAxWidget', u'QCalendarWidget', u'QCheckBox', u'QColumnView', 
u'QComboBox', u'QC
ommandLinkButton', u'QDateEdit', u'QDateTimeEdit', u'QDeclarativeView', 
u'QDial'
, u'QDialog', u'QDialogButtonBox', u'QDockWidget', u'QDoubleSpinBox', 
u'QFontCom
boBox', u'QFrame', u'QGraphicsView', u'QGroupBox', u'QLCDNumber', 
u'QLabel', u'Q
LineEdit', u'QListView', u'QListWidget', u'QMainWindow', u'QMdiArea', 
u'QMenu',
u'QMenuBar', u'QPlainTextEdit', u'QProgressBar', u'QPushButton', 
u'QRadioButton'
, u'QScrollArea', u'QScrollBar', u'QSlider', u'QSpinBox', u'QSplitter', 
u'QStack
edWidget', u'QStatusBar', u'QTabWidget', u'QTableView', u'QTableWidget', 
u'QText
Browser', u'QTextEdit', u'QTimeEdit', u'QToolBar', u'QToolBox', 
u'QToolButton',
u'QTreeView', u'QTreeWidget', u'QWebView', u'QWidget', u'QWizard', 
u'QWizardPage
', u'QWorkspace', u'TicTacToe', u'WorldTimeClock', u'XFormRendererEx']
<PySide.QtGui.QLabel object at 0x02B591C0>
*crash*

So it the class is in there, it manages to create a QLabel, but then it 
crashes.

Any ideas why? I don't have any pdb for python, so it's hard to get a 
callstack.

/Stefan



More information about the PySide mailing list