Я работаю над DAQ GUI. Во время сбора тестовых данных пользователь может выбирать между PlotWidgets для отображения графика. Это делается путем выбора флажков для графиков. Если флажок не установлен, данные этого канала не будут отображаться ни на одном графике.
Проблема в том, что когда я использую функцию RemoveItem () или table1.clear (), удаляется только последняя строка. Остальная часть кривой остается.
Совместное использование рабочей части проблемы.
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(838, 688)
self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
self.buttonBox.setGeometry(QtCore.QRect(470, 640, 341, 32))
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
self.buttonBox.setObjectName("buttonBox")
font = QtGui.QFont()
font.setPointSize(10)
Dialog.setFont(font)
self.pushButton=QtWidgets.QPushButton(Dialog)
self.buttonBox.setGeometry(QtCore.QRect(600, 1000, 50, 32))
self.pushButton.setFont(font)
self.pushButton.setText("remove line")
self.pushButton.setObjectName("pushButton_3")
pg.setConfigOption('background', 'w')
self.graphicsView = pg.PlotWidget(parent=Dialog)
self.graphicsView.showGrid(x=True,y=True)
self.graphicsView.setGeometry(QtCore.QRect(170, 140, 541, 321))
pg.getConfigOption('foreground')
self.graphicsView.setLabel('left', 'Temperature', 'C')
self.graphicsView.setLabel('bottom', 'Time', 's')
self.graphicsView.setObjectName("graphicsView")
self.graphicsView.enableAutoRange(enable=True)
self.graphicsView.setXRange(0,20,padding=0)
self.retranslateUi(Dialog)
self.buttonBox.accepted.connect(Dialog.accept)
self.buttonBox.accepted.connect(Dialog.reject)
self.pushButton.clicked.connect(self.removeline)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def removeline(self):
try:
self.graphicsView.plotItem.removeItem(table1)
except Exception as e:
print(str(e))
def callfunc(self,val):
process_delta=time.time()-val
t=threading.Timer(1-process_delta,Ui_Dialog.update,args=(self,))
t.daemon=True
t.start()
def update(self):
global count
global table1
table1=None
process_start=time.time()
vals=int(time.time()-start)
x_t.append(vals)
y.append(count+1)
pen = pg.mkPen(QtCore.Qt.black, 1, QtCore.Qt.SolidLine)
table1=self.graphicsView.plot(x_t,y,pen=pen)
QtCore.QCoreApplication.processEvents()
count += 1
self.callfunc(process_start)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
start=time.time()
Dialog.show()
count=0
x_t=[]
y=[]
vals=[]
ui.update()
sys.exit(app.exec_())