[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pykde
Subject:    Re: [PyKDE] TypeError: 'QObjectCreator' object is unsubscriptable
From:       Matt Newell <newellm () blur ! com>
Date:       2006-10-19 17:55:56
Message-ID: 200610191055.56732.newellm () blur ! com
[Download RAW message or body]

On Thursday 19 October 2006 08:00, Michael 'Mickey' Lauer wrote:
> Hi,
>
> I'm using Qt4.2 + sip/PyQt snapshots from 20061015:
> I'm getting the aforementioned error when supplying a baseclass to
> uic.loadUi. It also occurs on the load_ui2.py demo program.
>
> Any idea?
>
> Thanks,


I posted a patch about a week ago to fix this problem.  Attached.

Matt


["pyuic.diff" (text/x-diff)]

diff -ru PyQt-win-gpl-4-snapshot-20060930/pyuic/uic/Loader/loader.py pyuic/uic/Loader/loader.py
--- PyQt-win-gpl-4-snapshot-20060930/pyuic/uic/Loader/loader.py 2006-10-11 10:06:22.000000000 -0700
+++ pyuic/uic/Loader/loader.py  2006-10-11 10:06:40.000000000 -0700
@@ -12,9 +12,9 @@

     def createToplevelWidget(self, classname, widgetname):
         if self.toplevelInst is not None:
-            if not isinstance(self.toplevelInst, self.wdb[classname]):
+            if not isinstance(self.toplevelInst, self.wdb.findQObjectType(classname)):
                 raise TypeError, ("Wrong base class of toplevel widget",
-                                  (type(self.toplevelInst), self.wdb[classname]))
+                                  (type(self.toplevelInst), classname))
             return self.toplevelInst
         else:
             return self.wdb.createQObject(classname, widgetname, ())
Only in pyuic/uic: autoconnect.py
diff -ru PyQt-win-gpl-4-snapshot-20060930/pyuic/uic/objcreator.py pyuic/uic/objcreator.py
--- PyQt-win-gpl-4-snapshot-20060930/pyuic/uic/objcreator.py    2006-10-11 10:06:58.000000000 -0700
+++ pyuic/uic/objcreator.py     2006-10-11 10:07:54.000000000 -0700
@@ -50,14 +50,17 @@


     def createQObject(self, classname, *args, **kwargs):
+        classType = self.findQObjectType(classname)
+        if classType:
+            return self._cpolicy.instantiate(classType, *args, **kwargs)
+        raise NoSuchWidgetError, classname
+
+    def findQObjectType(self, classname):
         for module in self._modules:
             w = module.search(classname)
             if w is not None:
-                return self._cpolicy.instantiate(w, *args, **kwargs)
-        else:
-            raise NoSuchWidgetError, cls
-
-        raise NotImplementedEror, "must be overridden by subclasses"
+                return w
+        return None


     def getSlot(self, object, slotname):


_______________________________________________
PyKDE mailing list    PyKDE@mats.imk.fraunhofer.de
http://mats.imk.fraunhofer.de/mailman/listinfo/pykde


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic