因此,我正在构建管理多个自定义滑块小部件的程序。当前,我有一个slide_container(class),它包含一个滑块对象(类)的列表。然后将这些滑块对象插入到主窗口的布局中。当我仅上下添加和移动滑块的位置时,此方法一直运行良好。但是,当我尝试删除滑块时,一切都变糟了。只要在其中操作了滑块列表(添加,移动或删除滑块),就会在主窗口中调用clear和rebuild函数,如下所示。def clear_layout(self, layout): print "Cleared Layout..." while layout.count() > 0: item = layout.takeAt(0) widget = item.widget() if widget is not None: widget.deleteLater()def rebuild_slider_display(self): """ Delete the old sliders, then add all the new sliders """ self.clear_layout(self.slider_layout) print "Rebuild layout..." print len(self._widgets.widgets) for i, widget in enumerate(self._widgets.widgets): print widget.slider_name, " ", i self.slider_layout.insertWidget(i, widget) print "Layout widget count: ", self.slider_layout.count()当前,我在此行“ self.slider_layout.insertWidget(i,widget)”中遇到此错误 RuntimeError: wrapped C/C++ object of type SliderWidget has been deleted 我的直觉是,将实际的窗口小部件存储在窗口小部件容器中是错误的形式。我认为,当我删除小部件的deleteLater()时,发生的事情是它并不只是从列表中删除小部件,而是实际上删除了存储在小部件容器本身中的小部件类。
2 回答
四季花海
TA贡献1811条经验 获得超5个赞
我遇到的问题是清除布局的方式。如下图所示,从底部到顶部清除布局很重要。
for i in reversed(range(layout.count())):
layout.itemAt(i).widget().setParent(None)
添加回答
举报
0/150
提交
取消