代码之家  ›  专栏  ›  技术社区  ›  J.Stahl

pyqt4中的pyqtgraph有问题

  •  0
  • J.Stahl  · 技术社区  · 7 年前

    当我启动它时,我无法显示图形。任何帮助都将不胜感激。

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

    第二个是我的graphing类,当我用代码创建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 回复  |  直到 7 年前
        1
  •  1
  •   J.Stahl    7 年前

    必须把所有的东西都放在主课上才能让它发挥作用。我希望有一个更优雅的解决方案。我仍然无法更改背景或前景,但它正在工作,下面是代码:

    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