본문 바로가기

프로그래밍/PyQt5 GUI

39. QFontDialog

QFontDialog Class는 Font를 선택할 수 있게 해주는 대화창입니다. (QFontDialog 공식 문서) 참고

39-1 예제: ex38

import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QFontDialog, QVBoxLayout, QPushButton, QSizePolicy, QLabel)
"""
QSizePolicy.Fixed : sizeHint()의 크기로 고정
QSizePolicy.Minimum : sizeHint() 가 minimum이 된다. 이보다 작아질 수 없음.
QSizePolicy.Maximum : sizeHint() 가 maximum이 된다. 이보다 커질 수 없음.
QSizePolicy.Preferred : sizeHint()가 최적의 크기이나 크기변경 가능. 최소 크기는 minimumSizeHint()로 정해진다.
QSizePolicy.Expanding : sizeHint()가 최적의 크기이지만, 더 작아질 수 있다. 공간이 더 커지는 경우에(Expanding) 그 공간을 다 사용하게된다. 예로 수평 슬라이더가 있다.
QSizePolicy.MinimumExpanding : sizeHint()가 최소이면서 최적의 크기이다. 마찬가지로 공간이 더 늘어나면 그 공간을 더 사용한다.
QSizePolicy.Ignored : sizeHint()가 무시된다.
"""
class MyApp(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        btn = QPushButton('Dialog', self)
        btn.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        btn.move(20, 20)
        # btn.resize(200, 50)
        btn.clicked.connect(self.showDialog)

        vbox = QVBoxLayout()
        vbox.addWidget(btn)

        self.lbl = QLabel('The quick brown fox jumps over the lazy dog', self)
        self.lbl.move(130, 20)

        vbox.addWidget(self.lbl)
        self.setLayout(vbox)

        self.setWindowTitle('Font Dialog')
        self.setGeometry(300, 300, 250, 180)
        self.show()

    def showDialog(self):
        (font, ok) = QFontDialog.getFont()

        if ok:
            self.lbl.setFont(font)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())

39-2 설명

QPushButton 과 QLabel를 하나씩 만들고, QVBoxLayout에 배치 한 후 QFontDialog를 사용해서 라벨의 폰트를 바꿀 수 있도록 하였습니다.

(font, ok) = QFontDialog.getFont()

폰트 다이얼로그를 띄우고, getFont() 메서드를 사용해서 선택한 폰트와 불 값을 반환받습니다.

 if ok:
     self.lbl.setFont(font)

setFont() 메서드를 사용해서 선택한 폰트를 라벨의 폰트로 설정해줍니다.

 

39-3 결과

'프로그래밍 > PyQt5 GUI' 카테고리의 다른 글

41. QMessageBox  (0) 2021.07.28
40. QFileDialog  (0) 2021.07.28
38. QColorDialog  (0) 2021.07.27
37. QInputDialog  (0) 2021.07.27
36. QTableWidget  (0) 2021.07.27