[PyQt] Problem using promoted widgets with PyQt 4.4.2

Jan Ekholm jan.ekholm at smultron.net
Wed Jul 30 11:47:55 BST 2008


Hi,

Yesterday I upgraded to PyQt 4.4.2 as such a package was available as a part 
of the Kubuntu packages for KDE 4.1. Didn't think too much about it, but now 
that I try to run my photo management app I get some problems that I can't 
seem to solve. The application heavily relies on promoted widgets and that 
has worked fine since I moved the app to PyQt4 some years ago. Now with 4.4.2 
I get this when I try to run a minimal cut down part of the app:

% python tags.py
Traceback (most recent call last):
  File "tags.py", line 64, in <module>
    Tags().show()
  File "tags.py", line 19, in __init__
    loadUi("tags.ui", self)
  File "/usr/lib/python2.5/site-packages/PyQt4/uic/__init__.py", line 106, in 
loadUi
    return loader.DynamicUILoader().loadUi(uifile, baseinstance)
  File "/usr/lib/python2.5/site-packages/PyQt4/uic/Loader/loader.py", line 22, 
in loadUi
    return self.parse(filename)
  File "/usr/lib/python2.5/site-packages/PyQt4/uic/uiparser.py", line 572, in 
parse
    actor(elem)

<snip some levels>

  File "/usr/lib/python2.5/site-packages/PyQt4/uic/uiparser.py", line 155, in 
createWidget
    self.stack.push(self.setupObject(widgetClass(elem), parent, elem))
  File "/usr/lib/python2.5/site-packages/PyQt4/uic/uiparser.py", line 130, in 
setupObject
    obj =  self.factory.createQObject(clsname, name, args, is_attribute)
  File "/usr/lib/python2.5/site-packages/PyQt4/uic/objcreator.py", line 59, in 
createQObject
    classType = self.findQObjectType(classname)
  File "/usr/lib/python2.5/site-packages/PyQt4/uic/objcreator.py", line 67, in 
findQObjectType
    w = module.search(classname)
  File "/usr/lib/python2.5/site-packages/PyQt4/uic/Loader/qobjectcreator.py", 
line 48, in search
    return getattr(self._modules[module], cls)
AttributeError: 'module' object has no attribute 'KeywordTree'

The class KeywordTree is a promoted widget that inherits QTreeWidget and this 
worked fine with older versions of PyQt4 (the version shipped with Kubuntu 
Hardy). The .ui file is loaded dynamically with loadUi() and the actual .ui 
file is attached.

Relevant sections from the .ui seem to be the usage of the KeywordTree widget:

    <widget class="KeywordTree" name="keyword_tree" >
     <column>
      <property name="text" >
       <string>1</string>
      </property>
     </column>
    </widget>

And the promoted data:

 <customwidgets>
  <customwidget>
   <class>KeywordTree</class>
   <extends>QTreeWidget</extends>
   <header>keyword_tree.h</header>
  </customwidget>
 </customwidgets>

The real KeywordTree class is in a file keyword_tree.py and simply defines a 
QtGui.QTreeWidget subclass. This has worked for years. Also, some other apps 
that also use promoted widgets work just normally, so the whole 
promotion/loading mechanism is not broken, only in this case have I stumbled 
across any problems.

I consider nuking KDE 4.1 if I can't solve this, as this application is *very* 
important for us. But perhaps there's something that a n00b like me hasn't 
spotted? Something that used to work despite it being wrong?

Kind regards,
    Jan Ekholm

-- 

                  - "What're quantum mechanics?"
        - "I don't know. People who repair quantums, I suppose."
                                               -- Terry Pratchett, in Eric

-------------- next part --------------
A non-text attachment was scrubbed...
Name: tags.ui
Type: application/x-designer
Size: 2053 bytes
Desc: not available
Url : http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20080730/49b85b66/tags.bin


More information about the PyQt mailing list