[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