Python 为什么是布局,don';不更新?

Python 为什么是布局,don';不更新?,python,qt,pyqt,qwidget,pychart,Python,Qt,Pyqt,Qwidget,Pychart,我需要,从布局中清除我的图表查看器,但当我这样做时,我无法删除最后一个小部件。 当我测试布局的长度时,我得到0,但在更新布局后小部件仍然在这里,如图所示: 这里是我删除时的代码、小部件和图形 print("proceding to delete chart ", chartName, " at : ", indexGraph) currentGraph = self.charts[indexGraph] currentWidget = self.chartVs[indexGraph] se

我需要,从布局中清除我的图表查看器,但当我这样做时,我无法删除最后一个小部件。 当我测试布局的长度时,我得到0,但在更新布局后小部件仍然在这里,如图所示:

这里是我删除时的代码、小部件和图形

print("proceding to delete chart ", chartName, "  at : ", indexGraph)
currentGraph = self.charts[indexGraph]
currentWidget = self.chartVs[indexGraph]

self.chartLayout.removeWidget(currentWidget)
self.chartVs.remove(currentWidget)

currentGraph.clearData()
self.charts.remove(currentGraph)
self.chartLayout.update()

#currentWidget.resetCachedContent()
listGraphs.remove(chartName)
self.refreshListWithOpt(self.chartTree, listGraphs, 1, optGraphs)
下面是我创建图形并将其添加到布局的代码:

self.charts.append(chartClass(patientStr, exp))

print("\nNew Plot chart ", self.charts[lastIndex].name, " length : ", lastIndex )

listGraphs.append(self.charts[lastIndex].name)
print("list Graphs : ", listGraphs)
self.charts[lastIndex].plotJSON(myData.plot(patientStr, exp))

self.chartVs.append(QChartView(self.charts[lastIndex]))
self.chartVs[lastIndex].setRenderHint(QPainter.Antialiasing)
self.chartLayout.insertWidget(0, self.chartVs[lastIndex])

有什么建议吗

当一个小部件被添加到主小部件时,默认位置是0,0,当我们将其添加到布局时,该位置由它处理,因此如果我们将其从布局中删除,它将返回其初始位置,视觉上产生不被删除的效果,然后,为了解决这个问题,我们必须删除这个小部件。我们使用这个方法。

有一个解决方案,我的小部件仍然连接到布局,即使在删除了这个项目之后。因此,解决方案是
widgetToDelete.deleteLater()
widgetToDelete.setParent(无)


这个问题对我来说还不清楚。阿祖尔·阿格玛·吉拉斯,我的问题是当我删除最后一个小部件时,它仍然存在于我的布局中,即使是我到现在为止所做的一切。尝试:
currentWidget.deleteLater()
@Bellougaya你尝试过
删除currentGraph?@GhilasBELHADJ,我不知道问题出在QChartView中,它仍然连接到父布局,我得到了解决方案谢谢
print("proceding to delete chart ", chartName, "  at : ", indexGraph)
currentGraph = self.charts[indexGraph]
currentWidget = self.chartVs[indexGraph]

self.chartLayout.removeItem(currentWidgetItem)
currentWidgetItem.widget().deleteLater()
#currentWidgetItem.widget().setParent(None)

self.chartLayout.removeItem(currentWidgetItem)
self.chartVs.remove(currentWidget)
self.chartLayout.update()

#currentWidget.resetCachedContent()
listGraphs.remove(chartName)
self.refreshListWithOpt(self.chartTree, listGraphs, 1, optGraphs)