从单独的窗口控制matplotlib打印
我试图创建一个最简单的例子,通过另一个窗口中的按钮和函数来控制一个窗口中的绘图。我知道我需要更多的东西在窗口中与绘图,所以,我需要创建我的绘图图形与QT窗口 这就是我到目前为止所做的: 我的控制窗口:从单独的窗口控制matplotlib打印,plot,pyqt4,Plot,Pyqt4,我试图创建一个最简单的例子,通过另一个窗口中的按钮和函数来控制一个窗口中的绘图。我知道我需要更多的东西在窗口中与绘图,所以,我需要创建我的绘图图形与QT窗口 这就是我到目前为止所做的: 我的控制窗口: import sys from PyQt4.QtCore import (QSize, SIGNAL) from PyQt4.QtGui import (QApplication, QDialog, QPushButton, QVBoxLayout) import PlotWindow clas
import sys
from PyQt4.QtCore import (QSize, SIGNAL)
from PyQt4.QtGui import (QApplication, QDialog, QPushButton, QVBoxLayout)
import PlotWindow
class Window(QDialog):
def __init__(self, parent=None):
super(Window, self).__init__(parent)
self.pushButton1 = QPushButton()
self.pushButton1.setMaximumSize(QSize(110, 24))
self.pushButton1.setObjectName("pushButton1")
self.pushButton1.setText("Open Plot")
self.pushButton2 = QPushButton()
self.pushButton2.setMaximumSize(QSize(110, 24))
self.pushButton2.setObjectName("pushButton2")
self.pushButton2.setText("Update Plot")
layout = QVBoxLayout()
layout.addWidget(self.pushButton1)
layout.addWidget(self.pushButton2)
self.setLayout(layout)
self.setWindowTitle("Plot Control")
self.connect(self.pushButton1,SIGNAL("clicked()"),self.plotNew)
def plotNew(self):
print "new plot window"
self.dialog = PlotWindow.PlotWindow()
self.dialog.show()
app = QApplication(sys.argv)
form = Window()
form.open()
app.exec_()
我的绘图窗口:
import matplotlib
import numpy as np
from PyQt4 import QtGui
from matplotlib.lines import Line2D
import matplotlib.pyplot as plt
import matplotlib.animation as animation
class PlotWindow(QtGui.QDialog):
def __init__(self, parent=None):
super(PlotWindow, self).__init__(parent)
self.fig = plt.figure()
self.ax = self.fig.add_subplot(111)
plt.draw()
显然,我的绘图窗口是我遇到最大问题的地方。我看了很多例子,但没有一个能说明如何在另一个窗口中放置绘图
谢谢好吧,我可以回答我自己的部分问题,但我想谈谈这是否是实现目标的最佳方式。下面的代码显示了我所做的更改,以显示第二个窗口,其中包含一个绘图
import sys
from PyQt4 import QtGui
import numpy as np
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar
class PlotCanvas(FigureCanvas):
def __init__(self, parent):
self.fig = Figure()
self.axes = self.fig.add_subplot(111)
# self.x = np.arange(0.0,0.3,0.01)
# self.y = np.cos(2*np.pi*self.x)
# self.axes.plot(self.x,self.y)
FigureCanvas.__init__(self, self.fig)
self.setParent(parent)
FigureCanvas.setSizePolicy(self,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Expanding)
class PlotWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.setWindowTitle("Plot Figure")
self.main_widget = QtGui.QWidget(self)
vbl = QtGui.QVBoxLayout(self.main_widget)
qmc = PlotCanvas(self.main_widget)
ntb = NavigationToolbar(qmc, self.main_widget)
vbl.addWidget(qmc)
vbl.addWidget(ntb)
self.main_widget.setFocus()
self.setCentralWidget(self.main_widget)
我仍然需要帮助设置来自另一个窗口的绘图数据。
谢谢