2017-08-22 4 views
0

私はできるだけシンプルで機能するようにプログラムを煮詰めようとしました。まず、私が望むタブを持つ私のUIファイルです。コントロールタブにはグラフがあり、再生ボタンでプロットを開始します。 私はそれを表示するグラフを取得することはできません。どんな助けもありがとう。pyqt4のpyqtgraphに問題があります

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.tabWidget = QtGui.QTabWidget(self.centralwidget) 
     self.tabWidget.setGeometry(QtCore.QRect(0, 0, 801, 421)) 
     self.tabWidget.setStyleSheet(_fromUtf8("")) 
     self.tabWidget.setObjectName(_fromUtf8("tabWidget")) 
     self.tab_4 = QtGui.QWidget() 
     self.tab_4.setObjectName(_fromUtf8("tab_4")) 
     self.tabWidget.addTab(self.tab_4, _fromUtf8("")) 
     self.tab_2 = QtGui.QWidget() 
     self.tab_2.setObjectName(_fromUtf8("tab_2")) 
     self.tabWidget.addTab(self.tab_2, _fromUtf8("")) 
     self.tab = QtGui.QWidget() 
     self.tab.setObjectName(_fromUtf8("tab")) 
     self.pushButton = QtGui.QPushButton(self.tab) 
     self.pushButton.setGeometry(QtCore.QRect(290, 340, 75, 31)) 
     icon = QtGui.QIcon() 
     icon.addPixmap(QtGui.QPixmap(_fromUtf8("play_button.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) 
     self.pushButton.setIcon(icon) 
     self.pushButton.setObjectName(_fromUtf8("pushButton")) 
     self.pushButton_2 = QtGui.QPushButton(self.tab) 
     self.pushButton_2.setGeometry(QtCore.QRect(460, 340, 75, 31)) 
     icon1 = QtGui.QIcon() 
     icon1.addPixmap(QtGui.QPixmap(_fromUtf8("pause_button.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) 
     self.pushButton_2.setIcon(icon1) 
     self.pushButton_2.setObjectName(_fromUtf8("pushButton_2")) 
     self.pushButton_3 = QtGui.QPushButton(self.tab) 
     self.pushButton_3.setGeometry(QtCore.QRect(630, 340, 75, 31)) 
     icon2 = QtGui.QIcon() 
     icon2.addPixmap(QtGui.QPixmap(_fromUtf8("resume_button.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) 
     self.pushButton_3.setIcon(icon2) 
     self.pushButton_3.setObjectName(_fromUtf8("pushButton_3")) 
     self.graphicsView = QtGui.QGraphicsView(self.tab) 
     self.graphicsView.setGeometry(QtCore.QRect(205, 1, 591, 341)) 
     self.graphicsView.setObjectName(_fromUtf8("graphicsView")) 
     self.tabWidget.addTab(self.tab, _fromUtf8("")) 
     self.tab_3 = QtGui.QWidget() 
     self.tab_3.setObjectName(_fromUtf8("tab_3")) 
     self.tabWidget.addTab(self.tab_3, _fromUtf8("")) 
     MainWindow.setCentralWidget(self.centralwidget) 
     self.statusbar = QtGui.QStatusBar(MainWindow) 
     self.statusbar.setObjectName(_fromUtf8("statusbar")) 
     MainWindow.setStatusBar(self.statusbar) 

     self.retranslateUi(MainWindow) 
     self.tabWidget.setCurrentIndex(2) 
     QtCore.QMetaObject.connectSlotsByName(MainWindow) 

    def retranslateUi(self, MainWindow): 
     MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None)) 
     self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), _translate("MainWindow", "Calibration", None)) 
     self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "Material", None)) 
     self.pushButton.setText(_translate("MainWindow", "Start Plot", None)) 
     self.pushButton_2.setText(_translate("MainWindow", "Pause", None)) 
     self.pushButton_3.setText(_translate("MainWindow", "Resume", None)) 
     self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Control", None)) 
     self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("MainWindow", "Operator", None)) 


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

二つ目は、私がコードでGUIを作る際に作業を行い、私のグラフのクラスですが、私は、uiファイルとプログラムにプラグインできるようにしたいと思います。

import sys 
import time 
import datetime 
from PyQt4 import QtCore, QtGui, uic 
from PyQt4.QtGui import * 
from PyQt4.QtCore import * 
import pyqtgraph as pg 
import random 
from workingraspitab2 import Ui_MainWindow 

class Main(QMainWindow, Ui_MainWindow): 
    def __init__(self, parent=None): 
     super(Main, self).__init__(parent) 
     self.setupUi(self) 
     self.graphicsView = QtGui.QStackedWidget() 
     self.login_widget = LoginWidget(self) 
     self.graphicsView.addWidget(self.login_widget) 
     self.pushButton.clicked.connect(self.plotter)#the play button 
     self.curve = self.login_widget.it1 
     self.curve2 =self.login_widget.it2 


    def plotter(self): 
     self.data =[0] 
     self.data2 = [0] 
     self.timer = QtCore.QTimer() 
     self.timer.timeout.connect(self.updater) 
     self.timer.start(0) 
     print self.data 

    def updater(self): 
     self.data.append(self.data[-1]+10*(0.5-random.random())) 
     self.curve.setData(self.data, pen=pg.mkPen('b', width=1)) 
     self.data2.append(self.data2[-1]+0.1*(0.5-random.random())) 
     self.curve2.setData(self.data2, pen=pg.mkPen('r', width=1)) 
     print self.data 

class LoginWidget(QtGui.QWidget): 
    def __init__(self, parent=None): 
     super(LoginWidget, self).__init__(parent) 
     pg.setConfigOption('background', 'w') 
     pg.setConfigOption('foreground', 'k')  
     self.plot = pg.PlotWidget(title='Force and Extension vs. Time') 
     p1 = self.plot.plotItem 
     p2 = pg.ViewBox() 
     p1.showAxis('right') 
     p1.scene().addItem(p2) 
     p1.getAxis('right').linkToView(p2) 
     p2.setXLink(p1) 

     self.plot.getAxis('bottom').setLabel('Time', units='s') 
     self.plot.getAxis('left').setLabel('Force', units='lbf', color="#0000ff") 
     p1.getAxis('right').setLabel('Extension', units='in.', color="#ff0000") 

     def updateViews(): 
      p2.setGeometry(p1.vb.sceneBoundingRect()) 
      p2.linkedViewChanged(p1.vb, p2.XAxis) 

     updateViews() 
     p1.vb.sigResized.connect(updateViews) 

     self.it1 = p1.plot() 
     self.it2 = pg.PlotCurveItem() 
     p2.addItem(self.it2) 

if __name__ == '__main__': 

    import sys 
    app = QtGui.QApplication(sys.argv) 
    window = Main() 
    window.show() 
    sys.exit(app.exec_()) 

答えて

1

すべてをMainクラスに入れて、動作させる必要がありました。私はより洗練されたソリューションを望んでいました。私はまだ変更する背景や前景を得ることができませんが、それは動作しているとここにコードです:

class Main(QMainWindow, Ui_MainWindow): 
    def __init__(self, parent=None): 
     super(Main, self).__init__(parent) 
     self.setupUi(self) 
     pv = self.graphicsView 
     pv.setTitle('Force and Extension vs. Time') 
     pg.setConfigOption('background', 'w') 
     pg.setConfigOption('foreground', 'k') 
     p1 = pv.plotItem 
     p2 = pg.ViewBox() 
     p1.showAxis('right') 
     p1.scene().addItem(p2) 
     p1.getAxis('right').linkToView(p2) 
     p2.setXLink(p1) 
     pv.getAxis('bottom').setLabel('Time', units='s') 
     pv.getAxis('left').setLabel('Force', units='lbf', color="#0000ff") 
     p1.getAxis('right').setLabel('Extension', units='in.', color="#ff0000") 
     def updateViews(): 
      p2.setGeometry(p1.vb.sceneBoundingRect()) 
      p2.linkedViewChanged(p1.vb, p2.XAxis) 
     updateViews() 
     p1.vb.sigResized.connect(updateViews) 
     self.it1 = p1.plot() 
     self.it2 = pg.PlotCurveItem() 
     p2.addItem(self.it2) 

     self.pushButton.clicked.connect(self.plotter) 
     self.pushButton_2.clicked.connect(lambda: self.timer.stop()) 
     self.pushButton_3.clicked.connect(self.timer_start) 
     self.curve = self.it1 
     self.curve2 = self.it2 
関連する問題