From: Stefan H. <shm...@gm...> - 2012-07-25 12:28:17
|
Hello, It appears that the Qt4Agg backend ignores any user defined 'resize_event'. This program reproduces the issue (I am using the development version of matplotlib from github): import matplotlib matplotlib.use('Qt4Agg') import matplotlib.pyplot as plt def say_hello(event): print "Hello" fig = plt.figure() fig.canvas.mpl_connect('resize_event', say_hello) plt.show() Resizing the figure does not result in "Hello" outputs, as it should. The issue seems to be in lib/matplotlib/backends/backend_qt4.py, where resizeEvent() looks like: def resizeEvent( self, event ): if DEBUG: print('resize (%d x %d)' % (event.size().width(), event.size().height())) w = event.size().width() h = event.size().height() if DEBUG: print("FigureCanvasQtAgg.resizeEvent(", w, ",", h, ")") dpival = self.figure.dpi winch = w/dpival hinch = h/dpival self.figure.set_size_inches( winch, hinch ) self.draw() self.update() QtGui.QWidget.resizeEvent(self, event) By comparison with the other surrounding event handlers, the callback to FigureCanvasBase.resize_event() is manifestly missing. Indeed, adding FigureCanvasBase.resize_event(self) at the end of resizeEvent() solves the problem. Thanks, Stefan -- View this message in context: http://old.nabble.com/Matplotlib-Qt4Agg-backend-ignores-%27resize_event%27-tp34205981p34205981.html Sent from the matplotlib - devel mailing list archive at Nabble.com. |