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
위의 코드는, deleteLater()
을 setParent()
사용하고 None
에 개체를 설정. 이 모든 것이 필요한가요?
또 다른 가능한 시나리오는 위젯이있는 대화 상자가 있고이 위젯을 제거하고 새 위젯을 추가하려고합니다. 이전 위젯을 '누출'하고 싶지는 않지만 이런 식으로 올바른 방법이 무엇인지 확신 할 수 없습니다.
deleteLater()
은 절대로 필요하지 않을 수도 있습니다. 그것은 단지 참조 횟수를 감소 시키는가? 그렇다면 변수를 None으로 설정하는 것이 똑같은 일을하지 않을까요?
레이아웃에 추가 할 모든 객체를 만들 때'parent' 인수를 사용해야합니까? 아마 이것이 좀 더 명백한 것임을 알았지 만 필요합니까? –
아니요. 그것들을 레이아웃에 직접 추가하는 경우, 레이아웃은 레이아웃의 소유자의 자식이됩니다. – jdi
파티에 매우 늦었지만, 추가 할 것이라고 생각했습니다. - 'parent'인수를 사용하는 것은 불필요하지만, 코드의 구조를 조금 제한하고 다른 사람들이 쉽게 사용할 수 있기 때문에 아마 좋은 생각 일 것입니다 의도 한 봉쇄 계급이 무엇인지 확인하십시오. – Emmet