PyQTGraph перестает обновляться при сворачивании - PullRequest
0 голосов
/ 04 октября 2018

Я пишу инструмент, который отображает входящие данные tcp в реальном времени с PyQTGraph.В Инструменте есть 3D и 2D PyQTGraph, встроенные в QT Widgets.
Часто, когда я минимизирую Инструмент или изменяю Размер Разветвителя, 2D График перестает обновляться.Процедура обновления все еще работает, так как, когда я минимизирую и максимизирую инструмент, 2D-график обновляется 1 раз.

Вот скриншот инструмента, показывающий 2 графика, разделенные QT-Splitter
Инструмент

Вот часть кода, которая должна как-то отвечать.

Процедура обновления TCP:

class TCP_Handler:

    def updateGraphs(self):
        # starting independent Graph-Threads
        self.graphfutures = []
        future = self.executor.submit(self.surface3d_Graph.updateData, self.completeFrames.copy())
        self.graphfutures.append(future)
        future = self.executor.submit(self.line2D_Graph.updateData, self.completeFrames.copy())

Графический интерфейс:

class Ui_MainWindow(object):

    def setupUi(self, MainWindow):
        self.lineGraphWidget = Line2DGraph(defaultNumberOfData, self.splitter)
        self.lineGraphWidget.setObjectName("widget")

PyQTGraph:

class Line2DGraph(pg.GraphicsLayoutWidget):

    def initLines(self):
        for index in self.activeChannels:
            self.linesList[index] = self.p1.plot(self.dataArray[index], pen=(index, 3))


    def updateData(self, framesList):
        try:
            for frame in framesList:
                for activeChannel in self.activeChannels:
                    self.dataArray[activeChannel][:-1] = self.dataArray[activeChannel][
                                                         1:]  # shift data in the array one sample left
                    # (see also: np.roll)
                    self.dataArray[activeChannel][-1] = frame[activeChannel]
                    self.dataArray[activeChannel][
                        np.isinf(self.dataArray[activeChannel])] = np.nan  # should prevent problems with autoscaling
                    self.linesList[activeChannel].setData(self.graphrange, self.dataArray[activeChannel])
        except:
            print("2D Update:", sys.exc_info()[1])

Полный код можно найти здесь GitHub

...