[PyQt] PyQt5.uic.loadUiType() ignores <customwidgets> for main widget class

Kyle Altendorf sda at fstab.net
Sun Aug 4 17:38:28 BST 2019

It looks like presently PyQt5.uic.loadUiType() assumes that the .ui 
file's base widget's class is going to be in PyQt5.QtWidgets.  This is 
not the case for mine which often use a custom type specified in the 
<customwidgets> section.

Rather than:
     return (ui_globals[winfo["uiclass"]], getattr(QtWidgets, 

This seems to work:
     ui_base = ui_globals.get(winfo["baseclass"])

     if ui_base is None:
         ui_base = getattr(QtWidgets, winfo["baseclass"])

     return (ui_globals[winfo["uiclass"]], ui_base)

Example code and output are available at:

     sys.version: 3.7.4 (default, Aug  2 2019, 12:58:45)
     [GCC 6.3.0 20170516]
     sys.platform: linux
     QT_VERSION_STR: 5.13.0
     PYQT_VERSION_STR: 5.13.0
     SIP_VERSION_STR: 4.19.18
     Traceback (most recent call last):
       File "bad3.py", line 50, in <module>
       File "bad3.py", line 46, in main
         Ui, UiBase = PyQt5.uic.loadUiType(io.StringIO(ui_text))
line 204, in loadUiType
         return (ui_globals[winfo["uiclass"]], getattr(QtWidgets, 
     AttributeError: module 'PyQt5.QtWidgets' has no attribute 'MyWidget'

I'll attach my files again here but last time they didn't seem to be 
liked.  If anyone has suggestions on what I should do differently when 
attaching I'm happy to hear them.  I'm using RoundCube webmail.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: bad3.py
Type: text/x-python
Size: 1169 bytes
Desc: not available
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20190804/6251ac42/attachment.py>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: out
Type: text/x-c
Size: 664 bytes
Desc: not available
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20190804/6251ac42/attachment.bin>

More information about the PyQt mailing list