Я пишу инструмент, который отображает входящие данные 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