【发布时间】:2012-12-11 20:15:47
【问题描述】:
使用 PyQt4 时清理/删除小部件的“正确”或惯用方式是什么?
考虑以下代码:
choices = ['a', 'b', 'c']
checkboxes = []
layout = QtGui.QVBoxLayout()
dialog = MyDialog()
for c in choices:
checkboxes.append(QtGui.QCheckBox(c)
layout.addWidget(chkbox)
dialog.setLayout(layout)
for c in checkboxes:
c.setParent(None)
c.deleteLater()
c = None
以上代码使用setParent()、deleteLater(),并将对象设置为None。这些都是必要的吗?
另一种可能的情况是我有一个对话框,上面有一堆小部件,我想删除这些小部件并添加新的小部件。我不想“泄露”旧的小部件,但我不确定这样做的正确方法是什么。
在我看来,deleteLater() 可能永远不需要。它只是减少引用计数吗?如果是这样,只是将变量设置为 None 不会做同样的事情吗?
【问题讨论】: