[PyKDE] The strangest problem I've ever seen
    Jim Bublitz 
    jbublitz at nwinternet.com
       
    Tue Jul  2 01:36:00 BST 2002
    
    
  
On 01-Jul-02 Willi Richert wrote:
> Hi,
 
> look at the following code which returns segfault when it exits.
> 
>####################################################
> from qt import *
> import sys
> 
> class MyWindow(QMainWindow):
>     def __init__(self):
>         QMainWindow.__init__(self)
> 
>         self.Toolbar = QToolBar("",self,Qt.DockTop)
> 
> 
> def main(args):
>     a=QApplication(args)
>     w=MyWindow()
>     w.show()
>     QObject.connect(a, SIGNAL("lastWindowClosed()"), a,
> SLOT("quit()"))
>     a.exec_loop()
> 
> if __name__ == "__main__":
>     main(sys.argv)
>####################################################
 
> Now replace the variable "a" by any other name and it does
> segfault any more. 
It segfaults with 'a' or 'b' for the variable name
for me, but only at exit.
> Does anybody know, why?
> Also, if I delete the toolbar line it works with "a" as the
> variable.
QMainWindow keeps a QList of toolbars (called 'toolbars').
It expects that you'll add toolbars using ... addToolbar(),
not by adding a child widget. I suspect if you look at
the QToolbar code, it has similar expectations and the
destructor code is getting confused about who owns the
QToolbar when the program exits. Try using addToolbar()
instead (see the Qt docs for QMainWindow).
Can't say why your seeing strange things with the variable
name, since I can't reproduce that.
Jim
    
    
More information about the PyQt
mailing list