On 2012/07/05 11:33 PM, TP wrote: > Hi everybody, > > The following is a small test yielding a segmentation fault with PySide, but > not with PyQt4. > > 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? If yes, does any workaround exist?
Yes, it's a bug, but most likely in PySide. Mpl does not use any extension code specific to Qt. Eric > > 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_() ) > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > Matplotlib-users mailing list > Matplotlib-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users