[PySide] segfault related to NavigationToolbar when using PySide

Lars Bittrich lars.bittrich at googlemail.com
Sun Jul 8 18:59:52 CEST 2012


Hi,

for me it works flawlessly. However, I am using a newer version of
PySide on Ubuntu 12.04 with the pyside-ppa builds.

Regards,
	Lars

In [1]: from PySide import QtCore

In [2]: QtCore.qVersion()
Out[2]: '4.8.1'

In [3]: from PySide import __version__

In [4]: __version__
Out[4]: '1.1.1'

In [5]: import matplotlib

In [6]: matplotlib.__version__
Out[6]: '1.1.1rc'


On Sat, 07 Jul 2012 11:34:55 +0200
TP <paratribulations at free.fr> wrote:

> Hi everybody,
> 
> I have just posted a question on the Matplotlib mailing list:
> 
> http://sourceforge.net/mailarchive/forum.php?thread_name=4FF7A4D3.7060008%40hawaii.edu&forum_name=matplotlib-
> users
> 
> I obtain a segfault when using PySide, but not PyQt4. The answer obtained on 
> the Matplotlib mailing list seems to point to a possible bug in PySide.
> 
> For convenience, I have copied the Python script below at the end of this 
> post.
> 
> To test with PyQt4, use:
> $ python example.py
> 
> To test with PySide:
> $ python example.py pyside
> 
> With PySide, a segmentation fault appears as soon as the mouse cursor is 
> hovering the plot area. Without the NavigationToolbar (try to comment the 
> corresponding lines), the problem does not appear. It may be related to the 
> display of mouse coordinates in the NavigationToolbar, because when the mouse 
> is hovering the NavigationToolbar, no segfault appears.
> 
> These are the versions of Qt, PySide, and Matplotlib on my machine:
> >>> from PySide import QtCore
> >>> QtCore.qVersion()
> '4.8.1'
> >>> from PySide import __version__
> >>> __version__
> '1.1.0'
> >>> import matplotlib
> >>> matplotlib.__version__
> '1.1.1rc'
> 
> Is this a bug in PySide? If yes, does any workaround exist?
> 
> Thanks in advance,
> 
> TP
> 
> ###########     example.py     ############
> #!/usr/bin/env python
> 
> import sys
> 
> if len(sys.argv) >= 2 and sys.argv[1] == "pyside":
>     from os import environ
>     environ['QT_API'] = 'pyside'
> 
>     from PySide.QtCore import *
>     from PySide.QtGui import *
> else:
>     from PyQt4.QtCore import *
>     from PyQt4.QtGui import *
> 
> 
> from matplotlib.figure import Figure
> from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as 
> FigureCanvas
> from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg
> 
> class MplCanvasXY( FigureCanvas ):
> 
>     def __init__( self, title = None, xlabel = None, ylabel = None, 
> parent=None ):
> 
>         self.fig = Figure()
>         self.axes = self.fig.add_subplot(111)
>         self.axes.grid(True)
> 
>         FigureCanvas.__init__( self, self.fig )
>         self.setParent( parent )
> 
> 
> app = QApplication( sys.argv )
> d = QDialog()
> 
> vb = QVBoxLayout()
> canvas = MplCanvasXY()
> 
> vb.addWidget( canvas )
> navigationToolbar = NavigationToolbar2QTAgg(
>         parent = canvas
>         , canvas = canvas )
> vb.addWidget( navigationToolbar )
> d.setLayout( vb )
> 
> d.show()
> sys.exit( app.exec_() )
> ##############################
> _______________________________________________
> PySide mailing list
> PySide at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/pyside



More information about the PySide mailing list