Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Remove figure from Gcf when it is closed #1683

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 11 commits into from
Prev Previous commit
Next Next commit
PEP8 fixes to FigureManagerQT class
  • Loading branch information
tacaswell committed Jan 19, 2013
commit e56eec2d389f7f614c78f647d4eb67241ca58668
55 changes: 31 additions & 24 deletions 55 lib/matplotlib/backends/backend_qt4.py
Original file line number Diff line number Diff line change
Expand Up @@ -367,12 +367,14 @@ 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()'))
QtGui.QMainWindow.closeEvent(self, event)

class FigureManagerQT( FigureManagerBase ):

class FigureManagerQT(FigureManagerBase):
"""
Public attributes

Expand All @@ -382,30 +384,30 @@ class FigureManagerQT( FigureManagerBase ):
window : The qt.QMainWindow
"""

def __init__( self, canvas, num ):
if DEBUG: print('FigureManagerQT.%s' % fn_name())
FigureManagerBase.__init__( self, canvas, num )
def __init__(self, canvas, num):
if DEBUG:
print('FigureManagerQT.%s' % fn_name())
FigureManagerBase.__init__(self, canvas, num)
self.canvas = canvas
self.window = MainWindow()
self.window.connect(self.window, QtCore.SIGNAL('closing()'),
canvas.close_event)
self.window.connect( self.window, QtCore.SIGNAL( 'closing()'),
self._widgetclosed )
canvas.close_event)
self.window.connect(self.window, QtCore.SIGNAL('closing()'),
self._widgetclosed)

self.window.setWindowTitle("Figure %d" % num)
image = os.path.join( matplotlib.rcParams['datapath'],'images','matplotlib.png' )
self.window.setWindowIcon(QtGui.QIcon( image ))
image = os.path.join(matplotlib.rcParams['datapath'], 'images', 'matplotlib.png')
self.window.setWindowIcon(QtGui.QIcon(image))

# Give the keyboard focus to the figure instead of the
# manager; StrongFocus accepts both tab and click to focus and
# will enable the canvas to process event w/o clicking.
# ClickFocus only takes the focus is the window has been
# clicked
# on. http://developer.qt.nokia.com/doc/qt-4.8/qt.html#FocusPolicy-enum
self.canvas.setFocusPolicy( QtCore.Qt.StrongFocus )
self.canvas.setFocusPolicy(QtCore.Qt.StrongFocus)
self.canvas.setFocus()


self.window._destroying = False

self.toolbar = self._get_toolbar(self.canvas, self.window)
Expand All @@ -421,7 +423,7 @@ def __init__( self, canvas, num ):
# requested size:
cs = canvas.sizeHint()
sbs = self.window.statusBar().sizeHint()
self._status_and_tool_height = tbs_height+sbs.height()
self._status_and_tool_height = tbs_height + sbs.height()
height = cs.height() + self._status_and_tool_height
self.window.resize(cs.width(), height)

Expand All @@ -430,14 +432,14 @@ def __init__( self, canvas, num ):
if matplotlib.is_interactive():
self.window.show()

def notify_axes_change( fig ):
def notify_axes_change(fig):
# This will be called whenever the current axes is changed
if self.toolbar is not None:
self.toolbar.update()
self.canvas.figure.add_axobserver( notify_axes_change )
self.canvas.figure.add_axobserver(notify_axes_change)

@QtCore.Slot()
def _show_message(self,s):
def _show_message(self, s):
# Fixes a PySide segfault.
self.window.statusBar().showMessage(s)

Expand All @@ -447,8 +449,9 @@ def full_screen_toggle(self):
else:
self.window.showFullScreen()

def _widgetclosed( self ):
if self.window._destroying: return
def _widgetclosed(self):
if self.window._destroying:
return
self.window._destroying = True
try:
Gcf.destroy(self.num)
Expand Down Expand Up @@ -476,15 +479,19 @@ def resize(self, width, height):
def show(self):
self.window.show()

def destroy( self, *args ):
def destroy(self, *args):
# check for qApp first, as PySide deletes it in its atexit handler
if QtGui.QApplication.instance() is None: return
if self.window._destroying: return
if QtGui.QApplication.instance() is None:
return
if self.window._destroying:
return
self.window._destroying = True
QtCore.QObject.disconnect( self.window, QtCore.SIGNAL( 'destroyed()' ),
self._widgetclosed )
if self.toolbar: self.toolbar.destroy()
if DEBUG: print("destroy figure manager")
QtCore.QObject.disconnect(self.window, QtCore.SIGNAL('destroyed()'),
self._widgetclosed)
if self.toolbar:
self.toolbar.destroy()
if DEBUG:
print("destroy figure manager")
self.window.close()

def get_window_title(self):
Expand Down
Morty Proxy This is a proxified and sanitized view of the page, visit original site.