使用PyQt4時,清理/刪除小部件的「正確」或習慣用法是什麼?在pyqt中清理小部件的正確方法
考慮下面的代碼:
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做同樣的事情?
創建所有將添加到佈局的對象時,是否需要使用'parent'參數?我意識到這可能更加明確一點,但它是否需要? –
不,不是真的。如果您直接將它們添加到佈局,則佈局將使它們成爲佈局所有者的子項。 – jdi
這次聚會很晚,但我想補充一點 - 雖然不需要使用「parent」參數 - 但這可能是一個好主意,因爲它會稍微限制代碼的結構,並且使其他人更容易看看預期的收容等級是什麼。 – Emmet