0

別のウィンドウのボタンと関数から、あるウィンドウのプロットを制御する最も簡単な例を作成しようとしています。プロットを使用してウィンドウにさらに多くのものが必要になることはわかっているので、QTウィンドウを使用してプロット図を作成する必要があります。

これは私がこれまでに持っているものです:

私のコントロールウィンドウ:

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()

明らかに、私のプロットウィンドウは私が最大の問題を抱えている場所です。私はたくさんの例を見てきましたが、それらのどれも別のウィンドウ内にプロットを配置する方法を示していないようです。

ありがとう

4

1 に答える 1

0

さて、私自身の質問の一部に答えることはできますが、これが最善の方法であるかどうかについてコメントをお願いします。次のコードは、内部にプロットがある2番目のウィンドウを表示するために行った変更を示しています。

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) 

他のウィンドウからプロットのデータを設定するのにまだ助けが必要です。ありがとう

于 2012-11-09T22:22:36.913 に答える