QFontDialog 는 사용자가 원하는 글자 스타일을 편리하게 세팅할 수 있도록 제공하는 다이얼로그 창입니다. QFontDialog 클래스의 static 함수 getFont() 를 이용해서 객체를 생성할 수 있으며, 모달 다이얼로그 창입니다.
▼ 일반적인 윈도우 OS 에서 보는 Font Dialog 창입니다.
▼ Font File Dialog 를 띄우기 위한 QPushButton 버튼을 추가합니다. QMainWindow 에 위젯의 위치를 지정하기 위해 setGeometry() 함수를 사용했습니다. 파라미터 값은 차례대로 x, y, width, height 값을 나타냅니다. 그리고 clicked 시그널에 dialog_open() Slot 을 연결했습니다.
# QButton 위젯 생성
self.button = QPushButton('Color Dialog Button', self)
self.button.clicked.connect(self.dialog_open)
self.button.setGeometry(10, 10, 200, 50)
▼ Font File Dialog 에서 사용자가 선택한 폰트 정보를 표시할 라벨을 생성합니다. 값이 제대로 반환되는지 확인하기 위한 용도입니다.
# QFontDialog 반환값 표시 라벨
self.colorLabel = QLabel(self)
self.colorLabel.setGeometry(10, 60, 200, 50)
▼ Font File Dialog 를 띄우기 위해 추가한 QPushButton 에 연결한 함수 dialog_open() 의 구현 내용입니다. QFontDialog 는 생성자를 통해서 객체를 생성할 필요없이 static 함수 getFont() 를 이용합니다. QFontDialog 는 모달 형식으로 창이 열립니다. 그리고 QtWidgets 패키지에 포함되어 있는 위젯입니다. 사용자가 폰트와 스타일을 지정하고 창을 닫으면 QFont 객체를 반환합니다. QFont 의 toString() 함수를 사용해서 QFontDialog 다이얼로그가 반환한 속성값들을 콤마로 구분한 리스트 형태로 출력이 가능합니다. 예를 들어서 “Agency FB,9,-1,5,50,0,0,0,0,0,Regular “ 같은 형태로 반환합니다.
from PyQt5.QtWidgets import QFontDialog
# 폰트 다이얼로그 띄우기
@pyqtSlot()
def dialog_open(self):
# QFont 를 리턴받는다.
font, ok = QFontDialog.getFont()
if ok:
self.colorLabel.setText(font.toString())
▼ 위젯에 폰트를 적용하기 위해서는 setFont()함수를 사용합니다. 파라미터로 QFont 객체를 넘깁니다.
# QFont 를 리턴받는다.
font, ok = QFontDialog.getFont()
if ok:
self.colorLabel.setText(font.toString())
self.colorLabel.setFont(font)
▼ 결과 화면은 다음과 같습니다. QFontDialog 로 받은 QFont 의 값을 QLabel 에 표시하고 사용자가 설정한 폰트까지 적용했습니다.
▼ 전체 소스는 다음과 같습니다.
#!/usr/bin/env python3
import sys
from PyQt5.QtWidgets import QLabel, QMainWindow, QPushButton, \
QApplication, QFontDialog
from PyQt5.QtCore import *
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 윈도우 설정
self.setGeometry(300, 300, 400, 300) # x, y, w, h
self.setWindowTitle('Status Window')
# QButton 위젯 생성
self.button = QPushButton('Color Dialog Button', self)
self.button.clicked.connect(self.dialog_open)
self.button.setGeometry(10, 10, 200, 50)
# QColorDialog 반환값 표시 라벨
self.colorLabel = QLabel(self)
self.colorLabel.setGeometry(10, 60, 200, 50)
# 폰트 다이얼로그 띄우기
@pyqtSlot()
def dialog_open(self):
# QFont 를 리턴받는다.
font, ok = QFontDialog.getFont()
if ok:
self.colorLabel.setText(font.toString())
self.colorLabel.setFont(font)
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())
'파이썬 > PyQt5' 카테고리의 다른 글
파이썬(Python) PyQt5 화면 위치와 크기 조절하기 (0) | 2021.12.08 |
---|---|
파이썬(Python) PyQt5 윈도우 화면 최소, 최대화 이벤트 함수 구현하기 (0) | 2021.12.02 |
파이썬(Python) PyQt5 윈도우 메뉴바 구현하기 (0) | 2021.12.01 |
파이썬(Python) PyQt5 윈도우 마우스 이벤트 정보 알아 오는 방법 (0) | 2021.11.30 |
파이썬(Python) PyQt5 사용자 입력 다이얼 로그 QInputDialog 사용하기 (0) | 2021.11.29 |