2017-06-23 6 views
0

私はPyQt5 GUIでプロットするためにpyqtgraphを使用します。私はポップアップウィンドウでプロットすることができますが、私はgraphicsViewエリアにグラフを埋め込もうとしています。ここでPyQt5のグラフィックスを埋め込む

は私が新しいウィンドウで簡単なプロットを行うことができる方法である。

self.pushButton.clicked.connect(self.btn_clk) 

    MainWindow.show() 
def btn_clk(self): 
    L = [1,2,3,4,5] 
    pg.plot(L) 

私はプロットを埋め込むために、この行を使用しようとしましたが、それは動作しません:

self.pushButton.clicked.connect(self.btn_clk) 

    MainWindow.show() 
def btn_clk(self): 
    L = [1,2,3,4,5] 
    self.graphicsView.plot(L) 

import pyqtgraph as pg 
from PyQt5 import QtCore, QtGui, QtWidgets 

class Ui_MainWindow(object): 
    def setupUi(self, MainWindow): 
     MainWindow.setObjectName("MainWindow") 
     MainWindow.resize(662, 512) 
     self.centralwidget = QtWidgets.QWidget(MainWindow) 
     self.centralwidget.setObjectName("centralwidget") 
     self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralwidget) 
     self.horizontalLayout.setObjectName("horizontalLayout") 
     self.verticalLayout = QtWidgets.QVBoxLayout() 
     self.verticalLayout.setObjectName("verticalLayout") 
     self.lineEdit = QtWidgets.QLineEdit(self.centralwidget) 
     self.lineEdit.setObjectName("lineEdit") 
     self.verticalLayout.addWidget(self.lineEdit) 
     self.graphicsView = QtWidgets.QGraphicsView(self.centralwidget) 
     self.graphicsView.setObjectName("graphicsView") 
     self.verticalLayout.addWidget(self.graphicsView) 
     self.pushButton = QtWidgets.QPushButton(self.centralwidget) 
     self.pushButton.setObjectName("pushButton") 
     self.verticalLayout.addWidget(self.pushButton) 
     self.horizontalLayout.addLayout(self.verticalLayout) 
     MainWindow.setCentralWidget(self.centralwidget) 
     self.menubar = QtWidgets.QMenuBar(MainWindow) 
     self.menubar.setGeometry(QtCore.QRect(0, 0, 662, 21)) 
     self.menubar.setObjectName("menubar") 
     MainWindow.setMenuBar(self.menubar) 
     self.statusbar = QtWidgets.QStatusBar(MainWindow) 
     self.statusbar.setObjectName("statusbar") 
     MainWindow.setStatusBar(self.statusbar) 

     self.retranslateUi(MainWindow) 
     QtCore.QMetaObject.connectSlotsByName(MainWindow) 

    def retranslateUi(self, MainWindow): 
     _translate = QtCore.QCoreApplication.translate 
     MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) 
     self.pushButton.setText(_translate("MainWindow", "PushButton")) 

     self.pushButton.clicked.connect(self.btn_clk) 

     MainWindow.show() 
    def btn_clk(self): 
     L = [1,2,3,4,5] 
     pg.plot(L)#this line plots in a new window 
     self.graphicsView.plot(L)#this line doesn't work 



if __name__ == "__main__": 
    import sys 
    app = QtWidgets.QApplication(sys.argv) 
    MainWindow = QtWidgets.QMainWindow() 
    ui = Ui_MainWindow() 
    ui.setupUi(MainWindow) 
    MainWindow.show() 
    sys.exit(app.exec_()) 

答えて

1

Pg.plotはpg.graphicsWindows.PlotWindowクラスのインスタンスを返し、このクラスINH:ここで完全なコードでありますQGraphicsViewから消えます。すなわち、pg.graphicsWindows.PlotWindowはプロットに使用されますが、QGraphicsViewはそうではありません。あなたはクラスpg.PlotWidget()を使用しなければならないウィジェット内のプロットを埋め込みたい場合は、変更する必要があります。

self.graphicsView = QtWidgets.QGraphicsView(self.centralwidget) 

へ:

self.graphicsView = pg.PlotWidget(self.centralwidget) 

と:

def btn_clk(self): 
    L = [1,2,3,4,5] 
    self.graphicsView.plot(L)#this line doesn't work 

出力:

enter image description here

+0

もう一度ありがとう!完璧に動作します。それは有り難いです。 –

+0

あなたは私に電子メールを送った、正確に何が欲しいかを説明することができる。 – eyllanesc

+0

はい、私はあなたに別のメールを送ってきました。 –

関連する問題