Skip to content

Commit

Permalink
Merge pull request #1498 from tecki/qtcloseevent
Browse files Browse the repository at this point in the history
use QMainWindow.closeEvent for close events
  • Loading branch information
mdboom committed Jan 16, 2013
2 parents 80a406c + e407926 commit a203d02
Showing 1 changed file with 7 additions and 15 deletions.
22 changes: 7 additions & 15 deletions lib/matplotlib/backends/backend_qt4.py
Expand Up @@ -208,18 +208,6 @@ def __init__( self, figure ):
w,h = self.get_width_height()
self.resize( w, h )

# JDH: Note the commented out code below does not work as
# expected, because according to Pierre Raybaut, The reason is
# that PyQt fails (silently) to call a method of this object
# just before detroying it. Using a lambda function will work,
# exactly the same as using a function (which is not bound to
# the object to be destroyed).
#
#QtCore.QObject.connect(self, QtCore.SIGNAL('destroyed()'),
# self.close_event)
QtCore.QObject.connect(self, QtCore.SIGNAL('destroyed()'),
lambda: self.close_event())

def __timerEvent(self, event):
# hide until we can test and fix
self.mpl_idle_event(event)
Expand Down Expand Up @@ -379,6 +367,10 @@ def idle_draw(*args):
self._idle = True
if d: QtCore.QTimer.singleShot(0, idle_draw)

class MainWindow(QtGui.QMainWindow):
def closeEvent(self, event):
self.emit(QtCore.SIGNAL('closing()'))

class FigureManagerQT( FigureManagerBase ):
"""
Public attributes
Expand All @@ -393,8 +385,9 @@ def __init__( self, canvas, num ):
if DEBUG: print('FigureManagerQT.%s' % fn_name())
FigureManagerBase.__init__( self, canvas, num )
self.canvas = canvas
self.window = QtGui.QMainWindow()
self.window.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.window = MainWindow()
self.window.connect(self.window, QtCore.SIGNAL('closing()'),
canvas.close_event)

self.window.setWindowTitle("Figure %d" % num)
image = os.path.join( matplotlib.rcParams['datapath'],'images','matplotlib.png' )
Expand Down Expand Up @@ -621,7 +614,6 @@ def draw_rubberband( self, event, x0, y0, x1, y1 ):
def configure_subplots(self):
self.adj_window = QtGui.QMainWindow()
win = self.adj_window
win.setAttribute(QtCore.Qt.WA_DeleteOnClose)

win.setWindowTitle("Subplot Configuration Tool")
image = os.path.join( matplotlib.rcParams['datapath'],'images','matplotlib.png' )
Expand Down

0 comments on commit a203d02

Please sign in to comment.