[PyQt] PyQt 3.18.1 qApp.translate() issues since sip 4.11.1 (at least)
Phil Thompson
phil at riverbankcomputing.com
Thu Oct 7 12:14:45 BST 2010
On Wed, 6 Oct 2010 14:33:29 +0200, "Hans-Peter Jansen" <hpj at urpla.net>
wrote:
> Hi Phil,
>
> today, I noticed, that there's an ugly issue, resulting in such
tracebacks:
>
> Traceback (most recent call last):
> File "main.py", line 84, in <module>
> win = MainWin()
> File "mainwin.py", line 25, in __init__
> MainWinBase.__init__(self, parent, name, fl)
> File "mainwinbase.py", line 44, in __init__
> self.ladelisteToolbar = DbToolbar(LayoutWidget_2,"ladelisteToolbar")
> File "dbtoolbar.py", line 17, in __init__
> DbToolbarBase.__init__(self, parent, name, fl)
> File "dbtoolbarbase.py", line 79, in __init__
> self.languageChange()
> File "dbtoolbarbase.py", line 95, in languageChange
>
QToolTip.add(self.pbFindClear,self.__trUtf8("\x53\x75\x63\x68\x74\x65\x78\x74\x20\x6c\xc3\xb6\x73\x63\x68\x65\x6e"))
> File "dbtoolbarbase.py", line 112, in __trUtf8
> return qApp.translate("DbToolbarBase",s,c,QApplication.UnicodeUTF8)
> RuntimeError: underlying C/C++ object has been deleted
>
> Traceback (most recent call last):
> File "artikeltable.py", line 48, in updateArtikel
> self._artikelEdit = ArtikelEdit(self, self)
> File "artikeledit.py", line 18, in __init__
> ArtikelEditBase.__init__(self, parent, name)
> File "artikeleditbase.py", line 240, in __init__
> self.languageChange()
> File "artikeleditbase.py", line 260, in languageChange
> self.setCaption(self.__tr("Artikel Editor"))
> File "artikeleditbase.py", line 302, in __tr
> return qApp.translate("ArtikelEditBase",s,c)
> RuntimeError: underlying C/C++ object has been deleted
>
> Traceback (most recent call last):
> File "dbtoolbar.py", line 141, in toggleFilter
> qApp.mainWidget().updateStatus()
> RuntimeError: underlying C/C++ object has been deleted
>
> As you can see, qApp is always involved, translate() most of the time,
too.
> The real ugliness comes from not being reproducible, the same code
happens
> to run perfectly well on the next try, and I was not able to create a
> minimum example, yet.
Don't worry about an example that always fails - one that fails sometimes
will probably do.
> I do know for sure, that this doesn't happen with sip 4.10.1, hence it's
> something, that crawled in between 4.10.1 and 4.11.1. Does this ring a
bell
> for you?
There have been changes in an area where the only use case is qApp in
PyQt3.
> I noticed, that PyQt3 wraps QApplication.translate() as an ordinary
> method,
> whereas QCoreApplication.translate always capsule the translation result
in
> a "new QString()". Is that probably related?
No - the generated code is the same.
Phil
More information about the PyQt
mailing list