Hi, I want an application that displays a plot when a 'plot ' button is clicked. My code is given below. The figure window doesnot appear when i run the code. But if there is any error as i hav commented '#plt' the figure window appears. Can someone please tell me why this happens?
from PyQt4 import QtGui from PyQt4 import QtCore from matplotlib.backends.backend_qt4agg \ import FigureCanvasQTAgg as FigureCanvas from matplotlib.backends.backend_qt4agg \ import NavigationToolbar2QTAgg as NavigationToolbar from matplotlib.backends.backend_qt4agg \ import FigureCanvasQTAgg as FigureCanvas from matplotlib.figure import Figure import numpy as n import sys import os # that contains 2 pushbuttons ; 1st for plt ,2nd for close class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 600) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.pushButton = QtGui.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(120, 170, 75, 23)) self.pushButton.setObjectName("pushButton") self.pushButton_2 = QtGui.QPushButton(self.centralwidget) self.pushButton_2.setGeometry(QtCore.QRect(270, 170, 75, 23)) self.pushButton_2.setObjectName("pushButton_2") MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QObject.connect(self.pushButton_2, QtCore.SIGNAL("clicked()"), MainWindow.close) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "Plot", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton_2.setText(QtGui.QApplication.translate("MainWindow", "close", None, QtGui.QApplication.UnicodeUTF8)) #canvas widget class MplCanvas(FigureCanvas): def __init__(self,parent=None): self.fig = Figure() self.ax = self.fig.add_subplot(111) FigureCanvas.__init__(self, self.fig) self.fig.clf() class MplWidget(QtGui.QWidget): def __init__(self, parent = None): QtGui.QWidget.__init__(self, parent) self.canvas = MplCanvas() self.ntb = NavigationToolbar(self.canvas, self.canvas) self.v = QtGui.QVBoxLayout() self.v.addWidget(self.canvas) self.v.addWidget(self.ntb) self.ax=self.canvas.ax self.setLayout(self.v) class MyForm(QtGui.QMainWindow): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL("clicked()"), self.plot) def plot(self): w=MplWidget() x=n.arange(0,20) y=n.sin(x) print x print y y1=n.cos(x) w.ax.plot(x,y) #w.canvas.ax.plot(x,y1) w.show() plt if __name__ == "__main__": app = QtGui.QApplication(sys.argv) myapp = MyForm() myapp.show() sys.exit(app.exec_())
_______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt