코딩유치원 PyQt5 기초 1강 PyQt의 개념과 창 만들기 포스트를 공부하면서 적은 노트이다.
1
2
3
4
5
6
7
8
9
|
import sys
from PyQt5.QtWidgets import *
app = QApplication(sys.argv) #QApplication 클래스의 인스턴스 생성
window = QWidget() #QWidget클래스의 인스턴스 생성
window.show()
app.exec_()
|
cs |
import sys : 파이썬 내장 라이브러리에 존재하는 sys 라는 모듈을 임포트한다. sys 모듈은 파이썬 인터프리터가 제공하는 변수와 함수를 직접 제어할 수 있게 해주는 모듈
QApplication 과 QWidget 은 QtWidgets 모듈 안에 있는 클래스이다.
기본적으로 윈도우 창을 만들기 위해서 위의 코드는 핵심적으로 들어간다고 보면 된다.
1
|
app = QApplication(sys.argv)
|
cs |
QApplication은 pyqt를 쓰면 반드시 사용해야 하는 클래스이다.
sys.argv는 현재 소스코드 파일에 대한 경로를 담고 있는 리스트이다. argv는 가변적인 개수의 문자열(arguments vector)을 의미한다고 함.
app = QApplication(sys.argv) ~ app.exec_( ) 는 쌍으로 외워두고 그 안에 XXX = QWidget( ) ~ XXX.show( ) 가 들어간다고 보면 된다.
app.exec_( ) 를 보면 exec_는 QApplication클래스의 메소드 중 하나로서 인자는 없이 ( )로만 수행되는 함수인 것을 알 수 있다.
.show( )를 보면 QWidget 클래스의 메소드 중 하나로서 인자가 없이 ( )로만 수행되는 것을 알 수 있다.
1
2
|
window = Qwidget( )
window.show( )
|
cs |
Qwidget( )은 실제로 화면에 보여지는 윈도우를 생성하는 클래스이다.
이를 이용해 window라는 이름으로 객체를 생성한 후에 show 메소드로 창을 띄워준다.
여기서 Qwidget( )는 그냥 창의 껍데기만 만드는 것이라고만 이해하고 넘어간다.
1
|
app.exec_()
|
cs |
닫기 버튼 누를 때 까지 계속 실행하는 코드 : 닫기 버튼을 누를 때 까지, 루프를 돌며 GUI 창을 계속 띄워놓는 코드이다.
나만의 윈도우 만들기
PyQt에서 모든 위젯의 가장 기초가 되는 위젯을 윈도우라고 부른다. GUI를 만드는 것을 그림 그리는 것이라 생각하면 윈도우를 생성하는 것은 도화지를 준비하는 것으로 생각하면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import sys
from PyQt5.QtWidgets import *
class MyWindow(QMainWindow):
def __init__(self): # 클래스를 정의할 때 메소드 정의에는 반드시 self가 들어감!!
super().__init__()
app = QApplication(sys.argv)
window = MyWindow()
# 위의 기본 코드와 다른 점
# QMainWindow 클래스를 상속받은 MyWindow 클래스를 선언
# 그 후 부모클래스를 의미하는 super()메소드와 그 클래스의 속성을 불러오는 __init__ 초기화 메소드 사용
# QMainWindow의 속성이 무엇인지는 모르겠음
window.show()
app.exec_()
|
cs |
아까 처음 본 코드와의 차이점은 class MyWindow 부분과 window = MyWindow( ) 부분 이다.
나만의 윈도우 클래스를 만들어서 사용하기 위해 PyQt가 제공하는 QMainWindow를 상속 받아서 MyWindow라는 클래스를 정의해주어야 한다.
한마디로 MyWindow라는 클래스의 역할은 객체를 생성했을 때, 부모 클래스인 QMainWindow의 def __init__의 속성과 메소드를 불러오거나 실행시켜주는 역할이라고 생각하면 된다.
윈도우 타이틀 변경
원하는 창의 이름을 넣어 주고 싶을 땐 아래와 같이 setWindowTitle( ) 메소드를 사용한다.
def __init__(self) 메소드 안에 self.setWindowTitle("원하는 창 이름")을 넣으주면 된다.
1
2
3
4
5
6
|
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
# 도화지 코드의 이 위치에 아래 코드 한 줄을 추가할 것
self.setWindowTitle("코딩유치원 GUI")
|
cs |
윈도우 크기 변경
QMainWindow 클래스에는 윈도우의 출력 위치 및 크기를 변경하는 메서드인 setGeometry( )가 정의되어 있다.
아래의 코드는 setGeometry( ) 메서드를 사용해서 창의 좌측상단 꼭지점의 좌표가 300, 300이며 창의 크기가 400x400이 되도록 윈도우를 셋팅하는 코드이다.
1
2
3
4
5
6
|
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
# 도화지 코드의 이 위치에 아래 코드 한 줄을 추가할 것
self.setGeometry(300, 300, 400, 400) # 차례대로 창위치 x,y, 창크기 x,y
|
cs |
윈도우에 예쁜 아이콘 넣기
구글에서 icon-icons 사이트를 검색하거나 아래의 링크에서 아이콘 이미지를 다운로드한다. 테스트 해보니, 이미지 사이즈는 상관 없다.
무료 아이콘 SVG, PNG, ICO 또는 ICNS (icon-icons.com)
무료 아이콘 SVG, PNG, ICO 또는 ICNS
icon-icons.com
다운로드한 아이콘 파일을 파이썬 코드와 동일 디렉토리로 이동시킨다.
다음으로는 코드로 돌아와서, QIcon( ) 클래스를 사용하기 위하여 from PyQt5.QtGui import * 를 추가해준다.
윈도우에서 아이콘의 설정은 setWindowIcon( ) 메서드를 사용하며, QIcon 클래스의 인스턴스를 인자로 받는다.
QIcon 클래스의 인스턴스를 생성할 때는 인자로 아이콘 파일의 경로를 문자열로 넘겨주면 된다.
현재 예에서는 소스코드와 아이콘 파일이 같은 디렉토리에 있기 때문에 파일 이름만 적어주면 된다.
1
2
3
4
5
6
7
8
9
10
|
# 아이콘 삽입 클래스(QIcon) 사용을 위한 PyQt5 패키지의 QtGui 모듈 import
from PyQt5.QtGui import *
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
# 해당 위치에 아래 코드 추가
self.setWindowIcon(QIcon("pie-chart.png"))
|
cs |
전체 코드는 아래와 같다. 이걸 도화지코드로 사용할 수 있을 것 같다. 도화지 코드란 최초 아무것도 없는 빈 GUI 프로그램 코드를 말하는 듯.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("테크노 GUI")
self.setGeometry(300,300,400,400)
self.setWindowIcon(QIcon("icon.png"))
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MyWindow()
window.show()
app.exec_()
|
cs |
'PC' 카테고리의 다른 글
[노트]초보자를 위한 파이썬 GUI 프로그래밍 - PyQt5 (0) | 2022.03.03 |
---|---|
[펌] __name__의 의미 (0) | 2022.02.28 |
윈도우 재설치 후 할 것 정리 (0) | 2022.02.20 |
파이썬 GUI : PyQt5 기초 {퍼옴} (0) | 2022.02.10 |
URL단축 사이트 (0) | 2022.01.27 |