서론
파이썬(Python)을 처음 공부하면서 예제들이 콘솔 창에 값을 출력하는 것들 위주여서 UI를 어떻게 구현해야하는지 궁금했습니다. 그러던 중에 알게된 것이 PyQt5입니다. PyQt5는 Qt5 어플리케이션 프레임워크에 대한 파이썬 버전입니다. Qt는 플랫폼에 관계없이 다양한 기능을 포함하는 C++ 라이브러리 이자 개발툴인데요. PyQt5는 이러한 1000여개의 클래스들을 포함하는 파이썬 모듈의 모음입니다.
1. 기본 창 띄우기
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class MyApp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 창 타이틀 설정 -> My
self.setWindowTitle("My First Window")
# 창 아이콘 설정 -> icon.svg (폴더 경로에 이미지 파일 존재)
self.setWindowIcon(QIcon("icon.svg"))
# 창 사이즈 -> (300, 300)
self.resize(300, 300)
# 창 위치 -> 화면 Center
self.center()
# 창 Show
self.show()
def center(self):
# geometry of the main window
qr = self.frameGeometry()
# center point of screen
cp = QDesktopWidget().availableGeometry().center()
# move rectangle's center point to screen's center point
qr.moveCenter(cp)
# top left of rectangle becomes top left of window centering it
self.move(qr.topLeft())
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MyApp()
sys.exit(app.exec_())
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
def initUI(self):
# 창 타이틀 설정 -> My First Application
self.setWindowTitle('My First Application')
# 창 아이콘 설정 -> icon.svg (폴더 경로에 이미지 파일 존재)
self.setWindowIcon(QIcon('icon.svg'))
# 창 사이즈 -> (300, 300)
self.resize(300, 300)
# 창 위치 -> 화면 Center
self.center()
# 창 Show
self.show()
def center(self):
# geometry of the main window
qr = self.frameGeometry()
# center point of screen
cp = QDesktopWidget().availableGeometry().center()
# move rectangle's center point to screen's center point
qr.moveCenter(cp)
# top left of rectangle becomes top left of window centering it
self.move(qr.topLeft())
2. 컨트롤 그리드 레이아웃 배치
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class MyApp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
QToolTip.setFont(QFont('SansSerif', 10)) # 툴팁 폰트 설정
grid = QGridLayout()
self.setLayout(grid)
grid.addWidget(QLabel('Title:'), 0, 0) # Label 추가 (0, 0)
grid.addWidget(QLabel('Author:'), 1, 0) # Label 추가 (1, 0)
grid.addWidget(QLabel('Review:'), 2, 0) # Label 추가 (2, 0)
lineEdit1 = QLineEdit()
lineEdit1.setToolTip('This is LineEdit1') # 툴팁 추가
grid.addWidget(lineEdit1, 0, 1) # LineEdit 추가 (0, 1)
lineEdit2 = QLineEdit()
lineEdit2.setToolTip('This is LineEdit2') # 툴팁 추가
grid.addWidget(lineEdit2, 1, 1) # LineEdit 추가 (1, 1)
textEdit1 = QTextEdit()
textEdit1.setToolTip('This is TextEdit1') # 툴팁 추가
grid.addWidget(textEdit1, 2, 1) # TextEdit 추가 (2, 1)
self.setWindowTitle("My First Application")
self.setWindowIcon(QIcon("icon.svg"))
self.resize(300, 300)
self.center()
self.show()
def center(self):
qr = self.frameGeometry()
cp = QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MyApp()
sys.exit(app.exec_())
def initUI(self):
QToolTip.setFont(QFont('SansSerif', 10)) # 툴팁 폰트 설정
grid = QGridLayout()
self.setLayout(grid)
grid.addWidget(QLabel('Title:'), 0, 0) # Label 추가 (0, 0)
grid.addWidget(QLabel('Author:'), 1, 0) # Label 추가 (1, 0)
grid.addWidget(QLabel('Review:'), 2, 0) # Label 추가 (2, 0)
lineEdit1 = QLineEdit()
lineEdit1.setToolTip('This is LineEdit1') # 툴팁 추가
grid.addWidget(lineEdit1, 0, 1) # LineEdit 추가 (0, 1)
lineEdit2 = QLineEdit()
lineEdit2.setToolTip('This is LineEdit2') # 툴팁 추가
grid.addWidget(lineEdit2, 1, 1) # LineEdit 추가 (1, 1)
textEdit1 = QTextEdit()
textEdit1.setToolTip('This is TextEdit1') # 툴팁 추가
grid.addWidget(textEdit1, 2, 1) # TextEdit 추가 (2, 1)
마무리
파이썬(Python)에서 PyQt5를 사용해보는 첫번째 포스팅입니다. 처음에 파이썬으로 UI를 그리는게 막막하긴 했는데 공부하다보니까 간단한 UI를 그리는 것은 할 수 있을 것 같습니다. 앞으로 PyQt5의 다양한 기능들을 구현하는 방법에 대해서 공부해보고 포스팅할 수 있도록 하겠습니다.
Uploaded by N2T