PyQt5 기초

행동하는 개발자·2022년 10월 13일
0

PySide, PyQt

목록 보기
8/20

위젯(Widget)

사용자 인터페이스를 구성하는 핵심요소

이벤트 루프

QApplication 클래스의 객체를 생성한 후 exec_ 메서드를 호출하는 순간 생성된다. 한 번 생성된 이벤트 루프는 사용자가 윈도우를 닫을 때까지 실행되면서 위젯에서 발생한 시그널을 처리하는 슬롯을 호출하는 역할

  • PyQt에서는 특정 시그널이 발생했을 때 호출되는 함수 또는 메서드를 슬롯이라고 한다. 이를 다른 프로그래밍 언어에서는 콜백 함수라고 부른다.

먼저 PushButtonW 라는 이름으로 QMainWindow라는 클래스를 상속받는 클래스를 생성한다.

def __init__(self):

해당 클래스가 시작될 때 가장 먼저 시작될 수 있도록 하는 함수.

super().__init__()

생성자인 QMainWindow의 클래스를 먼저 시작할 수 있도록 한다.

self.setupUI()   

함수 즉 def는 클래스 내부 도는 외부에 존재할 수 있다. 여기서 주의할 것은 클래스 내부에 존재하는 메서드는 항상 클래스 자체를 인자로써 주고 받는다.

즉 PushButtonW 클래스의 생성자에서는 부모 클래스의 생성자를 호출할 뿐만 아니라 자신의 UI를 생성하기 위한 setupUI 메서드를 호출한다.

  • ico 파일과 png 파일의 차이점

png 파일은 16픽셀 사이즈만 올려놓게 되면 다른 곳에 활용될 때, 저해상도라 깨져보일 수 있어 size 속성을 추가해 값에 따라 여러 개를 추가해서 브라우저가 적절한 픽셀이미지를 사용할 수 있게 해야 한다.

이 것을 해결한 것이 ico파일, 이 파일 확장자는 애초에 여러가지 픽셀의 이미지를 포함해 저장할 수 있어서 사이즈 별로 필요한 크기 이미지를 브라우저가 알아서 사용하게 함.

단 파일용량이 무겁게 됨.

  • assert는 조건에 맞지 않는 경우에는 error를 발생시키라는 의미이다.
assert 1+1 == 2 // ok
assert 1+1 == 3 // AssertionError
  • configparser 마이크로소프트 윈도우 INI 파일과 유사한 구조를 제공하는 기본 구성 언어를 구현하는 ConfigParser 클래스를 제공한다.

  • ini 파일은 보통 프로그램 정보를 저장하는 텍스트 문서를 말합니다.

  • kwargs는 keyword argument의 줄임말로 키워드를 제공한다. 딕셔너리 형태로 {"키워드":"특정 값"} 이렇게 함수 내부로 전달된다.

  • ui 파일을 저장하고 python 코드와 연결할 수 있다.

import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic

#UI파일 연결
#단, UI파일은 Python 코드 파일과 같은 디렉토리에 위치해야한다.
form_class = uic.loadUiType("UI파일이름.ui")[0]

#화면을 띄우는데 사용되는 Class 선언
class WindowClass(QMainWindow, form_class) :
    def __init__(self) :
        super().__init__()
        self.setupUi(self)
  • 파이썬은 추상 클래스라는 기능을 제공한다. 추상 클래스는 메서드의 목록만 가진 클래스이며 상속받는 클래스에서 메서드 구현을 강제하기 위해 사용한다. 추상클래스를 만들려면 abc 모듈을 가져와야 하는데 abc는 abstract base class의 약자다. 괄호 안에 metaclass = ABCMeta를 지정하고, 메서드를 만들 때 위에 @abstractmethod를 붙여서 추상 메서드로 지정한다.

추상 클래스는 인스턴스로 만들 때는 사용하지 않으며 오로지 상속에만 사용한다.

  • isinstance 함수는 인스턴스가 특정 클래스/ 데이터 타입인지 검사해준다. 주로 isinstance(인스턴스, 클래스/데이터타입)으로 사용한다.

  • qlineedit이란, 한 줄짜리 글자를 입력받을 수 있는 입력위젯.

  • qlineEdit와 qcombobox로 입력을 받을 때 입력이 가능한 유효문자열을 밸리데이터로 제한할 수 있다. 이는 qt designer에서 설정할 수 없기 때문에 직접 코드로 작성해 주어야만 한다.

  • key 값으로 value 값을 구해낼 때, get을 쓴다.

  • 파이썬 def function 뒤에 -> 를 쓰는 경우가 있는데, 이는 리턴값이 어떠한 상태인지를 명시해주기 위해 사용한다.

  • np.fromfile은 텍스트나 이진 파일 데이터에서 배열을 생성하는 것으로, 단순한 형태의 텍스트 파일을 파싱하고 알려진 데이터 타입을 가진 이진 데이터를 효율적으로 읽을 수 있다(행렬데이터를 저장하고 로드하는 것과 같은 효과).

  • 파싱(Parsing): 컴퓨터 언어나 데이터 구조를 문법에 적합하도록 분석하는 것.

  • ndarray는 numpy의 핵심 클래스로 다차원 행렬 자원 구조를 지원한다. 겉으로 보기에는 array()란 것이 붙어 있을 뿐 리스트와 동일한 구조로 보이지만 list와 많은 차이가 있다.

    • N-Dimensional Array의 약자이다.
    • 모든 원소가 같은 자료형이어야 하고 벡터화 연산을 지원한다.
    • reshape 함수는 numpy.ndarray의 차원과 모양을 바꿔준다.
    • ndarray가 아닌 다른자료(list, tuple, range)를 바로 reshape하려면 오류가 뜬다. 이럴 때는 np.array()와 tolist()함수를 이용해야 한다.
profile
끊임없이 뭔가를 남기는 사람

0개의 댓글