2010-02-15 2 views
3

저는 PyQt 응용 프로그램을 만들고 있습니다. 현재 QHBoxLayout을 포함하는 상태 패널 (QWidget으로 정의 됨)이 있습니다. 이 레이아웃은 응용 프로그램의 다른 부분에서 만든 QPushButton으로 자주 업데이트됩니다.Qt 버튼이 별도의 프레임에 나타나지 않게하려면 어떻게해야합니까?

자주 바뀌는 것처럼 보이는 버튼이 나타날 때마다 업데이트 효과가 호출됩니다. 레이아웃에서 기존 버튼이 삭제되고 (layout.removeWidget(button) 다음에 button.setParent(None)) 새 버튼이 레이아웃에 추가됩니다.

일반적으로 작동합니다. 그러나 가끔 button.setParent(None) 버튼을 눌러 삭제하면 응용 프로그램에서 튀어 나오고 자체 독립 실행 형 프레임에서 부동으로 시작됩니다.

레이아웃에서 버튼을 제거하고 플로팅이 시작되지 않도록하려면 어떻게해야합니까?

답변

2

버튼의 close() 메소드를 호출해야합니다. 당신은 당신이 그것을 닫을 때이를 삭제하고 싶다면, 당신은 Qt.WA_DeleteOnClose 속성을 설정할 수 있습니다

button.setAttribute(Qt.WA_DeleteOnClose) 
2

당신이 당신의 버튼을 삭제하지 않으려면 레이아웃에서 제거하기 전에 버튼을 QWidget::hide()를 호출하십시오.