Hello,
I have decided to switch to the QtAgg backend because the Designer
software is very appealing. I succeeded in adding a custom widget
representing the FigureCanvasQTAgg, but when I compile the ui file, I
see that it tries to instantiate it as FigureCanvasQTAgg(Parent) where
Parent is the parent widget, which seems to be the standard format for
instantiating widgets. However, FigureCanvasQTAgg expects a figure as
an argument.
I have seen this tutorial:
http://www.scipy.org/Cookbook/Matplotlib/Qt_with_IPython_and_Designer
which suggests making a MatplotlibWidget to wrap the Canvas and set
everything up including the parent. I have written a version of this
for Qt4, but this seems like something that should be included in the
Qt4 backends. Any plans on adding this? I'd be happy to contribute.
Attached is my initial version.
Glenn
from PyQt4 import QtGui, QtCore
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg
from matplotlib.figure import Figure
class FigureCanvasQTAggWidget(FigureCanvasQTAgg):
def __init__(self, parent = None, width=3, height =3, dpi = 100):
self.fig = Figure(figsize=(width,height), dpi=dpi)
FigureCanvasQTAgg.__init__(self, self.fig)
self.setParent(parent)
self.setSizePolicy(QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Expanding)
self.updateGeometry()
from PyQt4 import QtGui, QtDesigner
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg
from matplotlib.figure import Figure
from FigureCanvasQTAggWidget import FigureCanvasQTAggWidget
class FigureCanvasQTAggWidgetPlugin(QtDesigner.QPyDesignerCustomWidgetPlugin):
def __init__(self, parent = None):
QtDesigner.QPyDesignerCustomWidgetPlugin.__init__(self)
self.initialized = False
def initialize(self,core):
if self.initialized:
return
self.initialized = True
def isInitialized(self):
return self.initialized
def createWidget(self, parent):
fc = FigureCanvasQTAggWidget(parent,width=2, height=2)
fc.figure.add_subplot(111) #Show something other than a grey canvas
return fc
def name(self):
return "FigureCanvasQTAggWidget"
def group(self):
return "Display Widgets"
def icon(self):
return QtGui.QIcon(_logo_pixmap)
def toolTip(self):
return "Matplotlib Canvas"
def whatsThis(self):
return ""
def isContainer(self):
return False
def domXml(self):
return '<widget class="FigureCanvasQTAggWidget" name=\"FigureCanvasQTAggWidget\" />\n'
def includeFile(self):
return "FigureCanvasQTAggWidget" #Eventually part of matplotlib.backends.backend_qt4agg hopefully
_logo_16x16_xpm = [
"16 16 5 1",
"B c #000000",
"r c #ff0000",
"g c #00ff00",
"b c #0000ff",
". c #ffffff",
"................",
"..BBBBBBBBBBBB..",
"..B.........bB..",
"..B........b.B..",
"..B.......b..B..",
"..B.......b..B..",
"..B.......b..B..",
"..B......b...B..",
"..B...b.b....B..",
"..B..b.b.....B..",
"..B..b.......B..",
"..B..b.......B..",
"..B.b........B..",
"..Bb.........B..",
"..BBBBBBBBBBBB..",
"................"]
_logo_pixmap = QtGui.QPixmap(_logo_16x16_xpm)
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users