You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Content

At the edge of matplotlib and PyQt4

We assume that everything is done in our backend basis:

import matplotlib
matplotlib.use('Qt4Agg')
import matplotlib.pyplot as plt

How to get the matplotlib figure window position on monitor

pos = positionfig.canvas.manager.window.pos()
print 'x,y=', pos.x(), pos.y()

How to move the matplotlib figure window in certain (x,y) position

fig.canvas.manager.window.move(x,y) # in pixels from top-left corner

How to move the matplotlib figure window on top

fig.canvas.manager.window.activateWindow() # Makes window active
fig.canvas.manager.window.raise_()         # Moves window on top

the attribute trick is that the fig.canvas.manager.window returns the QtGui.QMainWindow, which is subclass of QtGui.QWidget with all that useful methods.

How to add figure as a widget of the QtGui

fig = plt.figure(num=None figsize=(5,10), dpi=100, facecolor='w',edgecolor='w',frameon=True)
vbox = QtGui.QVBoxLayout()
vbox.addWidget(fig.canvas)    # Wraps figure canvas in widget 
self.setLayout(vbox)

How to receive a signal in program when window is activated by the mouse click on frame ?

I do not know yet...

But, if you click on figure canvas (the region inside the window frame, use

        fig.canvas.mpl_connect('button_press_event', self.onButtonPressEvent) 

#Should be implemented something like:
    def onButtonPressEvent( self, event ):
        """Figure is picked"""
        print 'click on fig number =', event.canvas.figure.number

How to receive a signal in program when close window by the click on "X"

        fig.canvas.mpl_connect('close_event', self.onCloseEvent)

#Should be implemented something like:
    def onCloseEvent( self, event ):
        print 'close event, fig number =', event.canvas.figure.number

How to close figure from program call

plt.close( num ) # close figure with known number {{num}}
...
plt.close('all') # close all figures
  • No labels