인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

TaeJoon Park님의 프로필 이미지

작성한 질문수

[Level 1] Qt를 이용한 Python 프로그래밍: 입문편

중첩된 Layout 예제 구현

self가 있는 거와 없는 버튼

작성

·

49

1

안녕하세요.

어느 강의에서는

hBtn1 = QPushButton("One")

어느 강의에서는

self.pbtShowDialog = QPushButton(self)

Button 객체를 선언할 때 self가 있는 거와 없는 것이 있습니다.

어떤 차이가 있는 것이며, 어떨때 self를 붙이나요?

답변 2

0

TaeJoon Park님의 프로필 이미지
TaeJoon Park
질문자

답변 감사합니다.

0

김대진님의 프로필 이미지
김대진
지식공유자

안녕하세요. TaeJoon Park 님,

hBtn1 = QPushButton("One")

이 경우, hBtn1지역 변수입니다. 즉, 이 변수를 선언한 함수나 메서드가 끝나면 더 이상 참조할 수 없습니다.

  • 이 버튼은 특정 위젯(부모)에 자동으로 추가되지 않습니다.

  • 부모 위젯을 설정하지 않으면, 이 버튼은 독립적인 위젯이 되며, 따로 layout.addWidget(hBtn1) 같은 코드로 추가해야 합니다.

  • 함수가 종료되면 hBtn1소멸될 가능성이 있습니다.

self.pbtShowDialog = QPushButton(self)

여기서 self는 **현재 클래스의 인스턴스(예: QMainWindow 또는 QWidget)**를 의미합니다.

  • 이 버튼은 self(즉, 부모 위젯)의 자식 위젯이 됩니다.

  • 부모가 삭제되면, 자식 위젯도 자동으로 삭제됩니다.

  • self.pbtShowDialog라는 인스턴스 변수가 되므로, 다른 메서드에서도 접근할 수 있습니다.

self.pbtShowDialog.setText("Click Me")

 

혹시 더 궁금한게 있으면 언제든 질문해 주세요.

감사합니다. 김대진 드림.