
Hello Scipy-devs: The link below on building a Qt app with a Matplotlib widget is very dated. http://wiki.scipy.org/Cookbook/Matplotlib/Qt_with_IPython_and_Designer After several research/trial/error cycles, I reproduced the Qt4 plot window that you using the relevant pyplot commands. I suppose I could update the Cookbook page above, but I need editing rights. Is this still possible, or are we trying to point users to a new location? Ryan P.S. Here's the relevant code, in case it matters. File = run.py ------------------------------------------------------------------------- from test import Ui_MainWindow from matplotlib.figure import Figure from matplotlib.backends.backend_qt4agg import ( FigureCanvasQTAgg as FigureCanvas, NavigationToolbar2QT as NavigationToolbar) from PyQt4 import QtGui class Main(QtGui.QMainWindow, Ui_MainWindow): def __init__(self, ): super(Main, self).__init__() self.setupUi(self) self.populatefigure() self.addtoolbar() self.plotdata() def populatefigure(self,): self.fig = Figure() self.canvas = FigureCanvas(self.fig) self.canvas.setParent(self.MplFigure) self.mplvbox = QtGui.QVBoxLayout() self.mplvbox.addWidget(self.canvas) self.MplFigure.setLayout(self.mplvbox) def addtoolbar(self,): self.toolbar = NavigationToolbar(self.canvas, self, coordinates=True) self.addToolBar(self.toolbar) def addtoolbar2(self,): self.toolbar = NavigationToolbar(self.canvas, self.MplFigure, coordinates=True) self.mplvbox.addWidget(self.toolbar) def plotdata(self,): self.axes = self.fig.add_subplot(111) self.axes.plot([1,3,2]) self.canvas.draw() if __name__ == "__main__": ''' Run IPython as follows: $ ipython --gui='qt' [In 1]: %run run.py If running this file directly from the command line, remove the comments below and do the following: $ python run.py ''' #import sys #app = QtGui.QApplication([]) main = Main() main.show() #sys.exit(app.exec_()) ------------------------------------------------- File = test.py (created with Designer and pyuic4) ------------------------------------------------------------------- # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'test.ui' # # Created: Thu Dec 11 12:32:15 2014 # by: PyQt4 UI code generator 4.11.3 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: def _fromUtf8(s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig) class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName(_fromUtf8("MainWindow")) MainWindow.resize(800, 600) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName(_fromUtf8("centralwidget")) self.gridLayout = QtGui.QGridLayout(self.centralwidget) self.gridLayout.setObjectName(_fromUtf8("gridLayout")) self.MplFigure = QtGui.QWidget(self.centralwidget) self.MplFigure.setObjectName(_fromUtf8("MplFigure")) self.gridLayout.addWidget(self.MplFigure, 0, 0, 1, 1) MainWindow.setCentralWidget(self.centralwidget) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None)) -------------------------------------------------

On Thu, Dec 11, 2014 at 1:29 PM, Ryan Nelson <rnelsonchem@gmail.com> wrote:
Hello Scipy-devs:
The link below on building a Qt app with a Matplotlib widget is very dated. http://wiki.scipy.org/Cookbook/Matplotlib/Qt_with_IPython_and_Designer
After several research/trial/error cycles, I reproduced the Qt4 plot window that you using the relevant pyplot commands. I suppose I could update the Cookbook page above, but I need editing rights. Is this still possible, or are we trying to point users to a new location?
Ryan
This is a timely question. In the last few weeks, I've run into a couple things I'd like to update: * At http://wiki.scipy.org/Cookbook/LASReader, I want to add a link to the latest version, which is now on github: https://github.com/WarrenWeckesser/las * I've seen at least three occurrences (a couple on stackoverflow, and one private email) of someone using the argument 'order=15' in a call to the 'set_integrator' method of 'scipy.integrate.ode'. Presumably this is because of the suggestion in the "NumPy for Matlab Users" page on the wiki ( http://wiki.scipy.org/NumPy_for_Matlab_Users) to replace 'ode15s' with ' scipy.integrate.ode(f).set_integrator('vode', method='bdf', order=15)'. This is pointless, because the stiff solver in 'vode'--presumably the solver of interest for someone using 'ode15s'--has a maximum order of 5, and the non-stiff solver has maximum order of 12. (The maximum order of 'ode15s' is also 5; the '15' in the name refers to the variable order ranging from 1 to 5.) I can log in, but I can't edit either of those pages. Warren P.S. Here's the relevant code, in case it matters.
File = run.py ------------------------------------------------------------------------- from test import Ui_MainWindow
from matplotlib.figure import Figure from matplotlib.backends.backend_qt4agg import ( FigureCanvasQTAgg as FigureCanvas, NavigationToolbar2QT as NavigationToolbar)
from PyQt4 import QtGui
class Main(QtGui.QMainWindow, Ui_MainWindow): def __init__(self, ): super(Main, self).__init__() self.setupUi(self)
self.populatefigure() self.addtoolbar() self.plotdata()
def populatefigure(self,): self.fig = Figure() self.canvas = FigureCanvas(self.fig) self.canvas.setParent(self.MplFigure)
self.mplvbox = QtGui.QVBoxLayout() self.mplvbox.addWidget(self.canvas) self.MplFigure.setLayout(self.mplvbox)
def addtoolbar(self,): self.toolbar = NavigationToolbar(self.canvas, self, coordinates=True) self.addToolBar(self.toolbar)
def addtoolbar2(self,): self.toolbar = NavigationToolbar(self.canvas, self.MplFigure, coordinates=True) self.mplvbox.addWidget(self.toolbar)
def plotdata(self,): self.axes = self.fig.add_subplot(111) self.axes.plot([1,3,2]) self.canvas.draw()
if __name__ == "__main__": ''' Run IPython as follows: $ ipython --gui='qt' [In 1]: %run run.py If running this file directly from the command line, remove the comments below and do the following: $ python run.py '''
#import sys #app = QtGui.QApplication([]) main = Main() main.show() #sys.exit(app.exec_()) -------------------------------------------------
File = test.py (created with Designer and pyuic4) ------------------------------------------------------------------- # -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'test.ui' # # Created: Thu Dec 11 12:32:15 2014 # by: PyQt4 UI code generator 4.11.3 # # WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: def _fromUtf8(s): return s
try: _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig)
class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName(_fromUtf8("MainWindow")) MainWindow.resize(800, 600) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName(_fromUtf8("centralwidget")) self.gridLayout = QtGui.QGridLayout(self.centralwidget) self.gridLayout.setObjectName(_fromUtf8("gridLayout")) self.MplFigure = QtGui.QWidget(self.centralwidget) self.MplFigure.setObjectName(_fromUtf8("MplFigure")) self.gridLayout.addWidget(self.MplFigure, 0, 0, 1, 1) MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None)) -------------------------------------------------
_______________________________________________ SciPy-Dev mailing list SciPy-Dev@scipy.org http://mail.scipy.org/mailman/listinfo/scipy-dev

On Thu, Dec 11, 2014 at 1:56 PM, Warren Weckesser < warren.weckesser@gmail.com> wrote:
On Thu, Dec 11, 2014 at 1:29 PM, Ryan Nelson <rnelsonchem@gmail.com> wrote:
Hello Scipy-devs:
The link below on building a Qt app with a Matplotlib widget is very dated. http://wiki.scipy.org/Cookbook/Matplotlib/Qt_with_IPython_and_Designer
After several research/trial/error cycles, I reproduced the Qt4 plot window that you using the relevant pyplot commands. I suppose I could update the Cookbook page above, but I need editing rights. Is this still possible, or are we trying to point users to a new location?
Ryan
This is a timely question. In the last few weeks, I've run into a couple things I'd like to update:
* At http://wiki.scipy.org/Cookbook/LASReader, I want to add a link to the latest version, which is now on github: https://github.com/WarrenWeckesser/las
* I've seen at least three occurrences (a couple on stackoverflow, and one private email) of someone using the argument 'order=15' in a call to the 'set_integrator' method of 'scipy.integrate.ode'. Presumably this is because of the suggestion in the "NumPy for Matlab Users" page on the wiki ( http://wiki.scipy.org/NumPy_for_Matlab_Users) to replace 'ode15s' with ' scipy.integrate.ode(f).set_integrator('vode', method='bdf', order=15)'. This is pointless, because the stiff solver in 'vode'--presumably the solver of interest for someone using 'ode15s'--has a maximum order of 5, and the non-stiff solver has maximum order of 12. (The maximum order of 'ode15s' is also 5; the '15' in the name refers to the variable order ranging from 1 to 5.)
I can log in, but I can't edit either of those pages.
Warren
P.S. Here's the relevant code, in case it matters.
File = run.py ------------------------------------------------------------------------- from test import Ui_MainWindow
from matplotlib.figure import Figure from matplotlib.backends.backend_qt4agg import ( FigureCanvasQTAgg as FigureCanvas, NavigationToolbar2QT as NavigationToolbar)
from PyQt4 import QtGui
class Main(QtGui.QMainWindow, Ui_MainWindow): def __init__(self, ): super(Main, self).__init__() self.setupUi(self)
self.populatefigure() self.addtoolbar() self.plotdata()
def populatefigure(self,): self.fig = Figure() self.canvas = FigureCanvas(self.fig) self.canvas.setParent(self.MplFigure)
self.mplvbox = QtGui.QVBoxLayout() self.mplvbox.addWidget(self.canvas) self.MplFigure.setLayout(self.mplvbox)
def addtoolbar(self,): self.toolbar = NavigationToolbar(self.canvas, self, coordinates=True) self.addToolBar(self.toolbar)
def addtoolbar2(self,): self.toolbar = NavigationToolbar(self.canvas, self.MplFigure, coordinates=True) self.mplvbox.addWidget(self.toolbar)
def plotdata(self,): self.axes = self.fig.add_subplot(111) self.axes.plot([1,3,2]) self.canvas.draw()
if __name__ == "__main__": ''' Run IPython as follows: $ ipython --gui='qt' [In 1]: %run run.py If running this file directly from the command line, remove the comments below and do the following: $ python run.py '''
#import sys #app = QtGui.QApplication([]) main = Main() main.show() #sys.exit(app.exec_()) -------------------------------------------------
File = test.py (created with Designer and pyuic4) ------------------------------------------------------------------- # -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'test.ui' # # Created: Thu Dec 11 12:32:15 2014 # by: PyQt4 UI code generator 4.11.3 # # WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: def _fromUtf8(s): return s
try: _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig)
class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName(_fromUtf8("MainWindow")) MainWindow.resize(800, 600) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName(_fromUtf8("centralwidget")) self.gridLayout = QtGui.QGridLayout(self.centralwidget) self.gridLayout.setObjectName(_fromUtf8("gridLayout")) self.MplFigure = QtGui.QWidget(self.centralwidget) self.MplFigure.setObjectName(_fromUtf8("MplFigure")) self.gridLayout.addWidget(self.MplFigure, 0, 0, 1, 1) MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None)) -------------------------------------------------
Along the same lines, I'd also like to mention that http://wiki.scipy.org/Cookbook/FortranIO/FortranFile and http://wiki.scipy.org/Cookbook/FortranIO give code that does the same as scipy.io.FortranFile (with a dtype-like API instead of the first page and more general use then the approach in the second page). -- Joseph Booker
participants (3)
-
Joseph Booker
-
Ryan Nelson
-
Warren Weckesser