18.09.30 09:48 작성
·
125
0
1번과 2번의 차이는 알겠는데
3.QPushButton("clikc1")
4.QPushButton("clikc1",self)
3번과 4번의 차이는 무었인가요? 예제에서 어떤때는 3번을 사용하면 화면에 보이고
class문법에서는 주로 4번을 사용하면 보이던데 로그인설정창(class)에서는 또 3번으로
사용하신는것 같은데 또 화이면 표시 되더라구요 => 강의는 어디에 표시할것인가 어디에 붙일것인가)라는 말씀으로 설명하신던데
좀 상세히 설명좀 해주세요..
답변 1
0
2018. 09. 30. 13:17
HYUNG SEOK LEE 님 안녕하세요.
네 우선 두 개의 차이는 한개의 파일에서 여러개의 클래스를 선언할 때
각 클래스마다 self 를 사용해야 "해당 클래스의 인스턴스인지"를 정확하게 선언해서 함수 등을 사용할 수 있습니다.
로그인 같은 경우에는 해당 파일 내에서 단독으로 사용하는 거라 self를 제외해도 해당 파일의 인스턴스를 인식해서
자동으로 화면에 보여지는 것입니다.
그렇다면 QPushButton 객체의 정확한 레퍼런스를 살펴볼까요?
공식 레퍼런스 링크 입니다.
http://pyqt.sourceforge.net/Docs/PyQt4/qpushbutton.html
init (self, QWidget parent = None)
init (self, QString text, QWidget parent = None)
init (self, QIcon icon, QString text, QWidget parent = None)
여기서 보면 생성자에서 첫 번째보면 parent를 지정해 주지 않으면 None 값으로 자동으로 생성하죠?
즉, 질문해주신 어떤 경우에(부모가 인스턴스 자체인경우에는) 자동으로 해당 화면에서 표시가 되는것입니다.
self를 넣어준 부분에서는 부모가 이 클래스 인스턴스임을 지정해줘서 폼에 출력이 되는 것입니다.
정리하면 한 개의 파일에 여러개의 클래스가 있고 다중의 PyQt 폼이 존재한다면 부모가 누구인지 지정할 경우는
명확하게 self를 넣어준 것이고 아닌 경우는 그냥 생략한 것입니다.
위의 링크의 self 이해하기 부분을 다시 읽어보시면 도움이 되실 겁니다.