-
Day 3. PyQt5 (QLabel)<개인공부> - IT/[Python] 2021. 2. 9. 05:23반응형
import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QLineEdit, QVBoxLayout, QWidget class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("My App") widget = QLabel("Hello") font = widget.font() font.setPointSize(30) widget.setFont(font) widget.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter) self.setCentralWidget(widget) app = QApplication(sys.argv) window = MainWindow() window.show() app.exec_()
QLabel은 수정할 수 없고 글자로 구성된 위젯이다. 위의 코드를 수행하게 되면 Hello라는 글자를 볼 수 있다. 앞서서 설명한 코드와 거의 대동소이 하기때문에 이 부분에서는 Qt namespace를 이용하는 부분만 간략하게 정리해보고자 한다.
widget.setAlignment 설정라인을 보게되면 AlignHenter와 AlignVCenter를 OR 연산하는 것을 알 수 있다. 즉, 정렬의 방법에는 크게 수평, 수직정렬이 있음을 할 수 있다. 수평정렬에는 Left, Right, Center, 그리고 Justify가 존재한다.
Flag 정렬방식 Qt.AlignLeft 왼쪽 정렬 Qt.AlignRight 오른쪽 정렬 Qt.AlignHCenter 중앙 정렬 Qt.AlignJustify 1) - 책에서는 빨간색으로 highlighting된 Flag 역시 설명하고 있지만 PyQt5에서는 동작하지 않는다.
또한, 수직정렬 옵션에는 아래와 같이 세 가지 있다.
Flag 정렬방식 Qt.AlignTop 위쪽 정렬 Qt.AlignBottom 아래쪽 정렬 Qt.AlignVCenter 중앙 정렬 코드에서 보여진 것 처럼 각각의 Flag는 OR연산으로 조합이 가능하다. 조금더 자세하게 보면 살펴보면 flag는 non-overlapping bitmasks이다. 예를 들면, Qt.AlignLeft는 0b0001, Qt.AlignBotton은 0b0100의 값을 갖는다. 그래서 이 둘을 OR연산하면 0b0101이고 Bottom left 정렬로 해석할 수 있는 것이다. 물론, Qt.AlignCenter라는 하나의 flag로 수평, 수직을 동시에 정렬할 수 있다는 사실!
책에서도 weirdly라는 단어를 사용해서 표현했지만 image도 QLabel을 통해서 출력할 수 있다. 코드는 아래와 같으며 기본 옵션에 의해서 창의 크기를 변경하게 되면 이미지는 함께 확대/축소가 되지 않는다. 이 옵션을 변경하기 위해서는 아래와 같이 선언해주면 된다.
import sys from PyQt5.QtGui import QPixmap from PyQt5.QtWidgets import QApplication, QLabel, QMainWindow class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("My App") widget = QLabel() widget.setPixmap(QPixmap("test.jpg")) # 해당 라인이 없으면 이미지는 고정크기로 출력됨 widget.setScaledContents(True) self.setCentralWidget(widget) app = QApplication(sys.argv) window = MainWindow() window.show() app.exec_()
1. Reference site: www.geeksforgeeks.org/qt-alignment-in-pyqt5/ (PyQt5에서 Flag 동작하지 않는 내용)
2. Reference book: "Create GUI Applications with Python & Qt5: The hands-on guide to making apps with Python"
반응형'<개인공부> - IT > [Python]' 카테고리의 다른 글
Day 5. PyQt5 (QListWidget, QLineEdit) (0) 2021.03.10 Day 4. PyQt5 (QCheckBox, QComboBox) (0) 2021.03.05 Day 2. PyQt5 (Signal and Slot) (0) 2021.02.09 Day 1. PyQt5 사용해보기 - 빈 윈도우 띄우기 그리고 이벤트 루프 (0) 2021.02.04 복수개의 값 리스트에서 지우기 (None, multiple data remove in list) (0) 2020.09.11