본문 바로가기
프로그래밍 관련/PyQt

PyQt 혼자 공부 할 때 알아둬야 할 팁들

by 존버매니아.임베디드 개발자 2021. 12. 5.
반응형

요약:

1.VsCode의 자동완성 기능 사용하자

(클래스이름,메소드이름,멤버변수 이름)

 

2.VSCode의 Definition 기능 활용하자

 

3,정확한 내용은 구글링 및 QT 라이브러리 홈페이지 참고하자

 ※ QT 라이브러리 홈피 : Search Results (qt.io)

 

4. PyQt 의 클래스들은 대부분 상속에 상속에 상속을.. 받는 형태로 구성돼있다는 걸 참고로 알아두자.


1. VsCode를 반드시 사용하자

VsCode 없이는 PyQt 솔직히 공부 못했을 것 같다.

VsCode 자동완성 기능이 매우 편리해서 이걸 꼭 활용해야 한다.

 

 

1-1) 사용하려는 클래스의 이름을 찾은 후, 에디터 상에 일단 객체를 선언해본다.

 

예를 들어 내가 QTableWidget 클래스와 관련된 작업을 한다고 가정하면

from PyQt5.QtWidgets import *

ta1 = QTableWidget()

이 때 클래스 이름 선언할때도 FullName과 대소문자를 굳이 외울 필요가 없는게

QTable 까지만 입력했는데 아래 그림처럼 이미 자동완성으로 비슷한 이름의 클래스들을 나열해준다.

 

1-2) 해당 클래스에서 무언가 작업을 하고싶을 때..

어떤 메소드가 있는지, 메소드의 이름이 뭔지 몰라도 대강 적당한 단어를 한번 쳐본다.

table에 뭔가를 추가하고 싶다?

추가하는거니까 add, set 이런 단어를 쳐보자

 

뭔진 모르겠지만 add를 치니까 저런 메소드 들이 후보로 뜬다.

에디터를 사용하여 메소드의 definition을 본다

addAction메소드가 정확히 뭐하는건진 모르겠지만 action이라는 파라미터를 줘야하고,

return 값이 없다는 정도의 정보를 알 수 있다. 이것만 알아도 제법 큰 도움이 된다.

 

구체적으로 해당 메소드가 뭐하는건지 알고 싶으면

구글링을 하거나 아래 Qt 라이브러리 홈페이지를 뒤져보자.

Search Results (qt.io)

 

참고로 Method 자동완성 기능은 제법 강력해서

ta1.add 라고 입력했다고해서 꼭 add로 시작하는 메소드만 보여주는건 아니고 메소드 이름 중간에 add가 끼여있어도

자동완성에 뜬다.

 

click이라고 적었더니 click으로 시작하는 단어 외에 중간에 click이 껴있어도 모두 찾아서 보여준다.


그리고 해당 클래스안에 어떤 메소드들이 있는지 찾아보고 싶을 때도 Definition 기능을 활용하자

예를 들어 QTableWidget 안에 어떤 메소드들이 정의돼있는지를 보려면

QTableWidget 코드에 선언한 다음 Definition을 보자 

 

QTableWidget 클래스 안에 정의된 메소드들의 이름, 메소드의 파라미터 타입들, 메소드의 리턴타입

그리고 생성자의 형태

그리고 부모클래스 정보까지.. 

 

얘네들을 한번 쓱~ 보면 대강 어떻게 쓰면되겠다 하고 감을 잡을 수 있다.


4. Qt의 클래스들은 대부분 상속에 상속에 상속..을 받는 형태로 구성돼있다

이건 그냥 배경지식으로 알아두는게 좋을 것 같아서 써놓는다. 미래의 내가 까먹을까봐

 

예를들어 QTableWidget 을 만든 후, 테이블의 위치를 옮기고 테이블의 그래픽상의 사이즈를 정할때

우리는 

setGeometry 라는 메소드를 사용할 수 있다.

근데 이 메소드는 QTableWidget 클래스에는 정의 안돼있는데 어떻게 쓸 수 있을까?

 

setGeometry 메소드는 QWidget 클래스에 정의돼있는데

QTableWidgetQWidget을 상속받은 클래스이기 때문에 사용이 가능한 것이다.

 

참고로 QTableWidget의 부모를 살펴보자면..

QTableWidget -> QTableView -> QAbstractItemView -> QAbstractScrollArea -> QFrame->QWidget -> xxx

더 있는데 생략

이런식으로 상속에 상속에 상속을 받아서 아무튼 QTableWidget의 먼 조상중에 QWidget이 있기 때문에

QWidget에 정의된 메소드인 setGeometry 를 사용할 수 있는 것임

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형