сюжет pyqtgraph внутри главной формы (дизайнер qt) - PullRequest
0 голосов
/ 18 апреля 2020

мой код отображает этот код внутри моей основной формы отлично :

                self.graphics_View_widget.clear() 
                pg.setConfigOption('background', 'k')
                h=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
                t=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
                self.graphics_View_widget.plot(h, t, pen=(0,0,255))

это др aws в указанном месте без проблем

, но когда я хотите изменить ось x на строковые объекты, например так:

                  self.graphics_View_widget.clear()  
                  h=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
                  t=['a','b','c','d','e','f','g','h','i','j']
                  xDict=dict(enumerate(t))
                  xValue=list(xDict.keys())
                  self.graphics_View_widget= pg.GraphicsWindow()
                  bottomAxis = pg.AxisItem(orientation='bottom')
                  pp=self.graphics_View_widget.addPlot(axisItems={'bottom': bottomAxis},name='h')
                  xtickts=[xDict.items()]
                  bottomAxis.setTicks(xtickts)
                  pp.plot(xValue,h)

теперь это dr aws эта диаграмма в новом окне (вместо указанного местоположения в конструкторе qt)

где мой ошибка ???

.py код

      from PyQt5 import QtWidgets, uic,QtCore, QtGui
      from PyQt5.QtGui import QColor

      import pyqtgraph as pg
      import sys  

      class MainWindow(QtWidgets.QMainWindow):

          def __init__(self, *args, **kwargs):
              super(MainWindow, self).__init__(*args, **kwargs)
              #Load the UI Page
              uic.loadUi('teeeeest.ui', self)
              self.pushButton.clicked.connect(self.show_plot)

          def show_plot(self):
               ############################################ this code draws in the specified location without any problem:
               # self.graphics_View_widget.clear() 
               # pg.setConfigOption('background', 'k')
               # h=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
               # t=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
               # self.graphics_View_widget.plot(h, t, pen=(0,0,255))


               ############################################ this code draws a new window (instead of specified location in qt designer)
                 self.graphics_View_widget.clear()  
                 h=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
                 t=['a','b','c','d','e','f','g','h','i','j']
                 xDict=dict(enumerate(t))
                 xValue=list(xDict.keys())
                 self.graphics_View_widget= pg.GraphicsWindow()
                 bottomAxis = pg.AxisItem(orientation='bottom')
                 pp=self.graphics_View_widget.addPlot(axisItems={'bottom': bottomAxis},name='h')
                 xtickts=[xDict.items()]
                 bottomAxis.setTicks(xtickts)
                 pp.plot(xValue,h)

      if __name__ == '__main__':      
          app = QtWidgets.QApplication(sys.argv)
          main = MainWindow()
          main.show()
          sys.exit(app.exec_())

qt designer ui 1

2

1 Ответ

0 голосов
/ 19 апреля 2020

это решение:

  1. добавить Qgraphicsview (назовите его widget_test)

2.promote name name = GraphicsLayoutWidget --- имя заголовка = pyqtgraph

             h=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
             t=['a','b','c','d','e','f','g','h','i','j']
             xDict=dict(enumerate(t))
             xValue=list(xDict.keys())
             bottomAxis = pg.AxisItem(orientation='bottom')
             pp=self.widget_test.addPlot(axisItems={'bottom': bottomAxis},name='h')
             xtickts=[xDict.items()]
             bottomAxis.setTicks(xtickts)
             pp.plot(xValue,h)

и теперь у вас есть pyqtgraph со строкой оси x внутри вашей формы

удачи

...