QLabel 은 화면에서 한줄짜리 글자를 보여주고 싶을 때 사용하는 위젯입니다. 버튼 같은 위젯과 달리 사용자와 상호작용을 하지 않습니다. 단순히 텍스트와 이미지를 보여주는 용도로 사용합니다. 라벨의 틀 안에 위젯은 좌우, 수직 정렬이 가능하며, 함수를 이용해서 CSS 디자인을 적용할 수 있습니다.
![](https://blog.kakaocdn.net/dn/Qw3u5/btsIlVh4ZIf/zTRnhvNH9bDX9jBj7eyKWk/img.png)
◎ 1. QLabel 의 만들기와 텍스트 입력 |
▼ 먼저 가장 기초적인 QLabel 생성과 텍스트 입력에 관해 알아보겠습니다. QLabel 객체를 생성하고 setGeometry() 를 이용해서 화면에서의 위젯 위치를 정합니다. 그리고 setText() 함수로 라벨에 표시할 텍스트를 입력합니다.
from PyQt5.QtWidgets import QLabel
# QLabel 1 추가
self.label1 = QLabel(self)
self.label1.setGeometry(10, 10, 100, 50)
self.label1.setText("Label 1")
# QLabel 2 추가
self.label2 = QLabel(self)
self.label2.setGeometry(10, 70, 100, 50)
self.label2.setText("Label 2")
▼ 소스를 실행한 결과는 아래와 같습니다.
![](https://blog.kakaocdn.net/dn/PsSBX/btsInPm9Ss5/K3s6mGmcPEzi3DicTOuExk/img.png)
◎ 2. QLabel 내에 Text 정렬하기 |
▼ 기본 라벨내의 텍스트 위치는 왼쪽입니다. 함수는 setAlignment(Qt.Alignment) 를 사용합니다. 함수의 인수 값으로 정렬 속성이 필요한데, 정렬 상수 플래그 값은 아래 표와 같습니다. 좌우, 상하로 구분되어 있습니다.
![](https://blog.kakaocdn.net/dn/eDRdBo/btsInjvvoPp/3yw3Mmrk4izVUT0QoS97vk/img.png)
▼ setAlignment() 에서 텍스트 위치를 좌우 상하 동시에 적용하고 싶다면 버티컬바 “|” 연산자를 이용해서 두 개의 상수를 추가합니다. setAlignment(Qt.AlignRight | Qt.AlignVCenter) 는 좌우에서 오른쪽, 상하에서 중앙에 위치시킵니다.
# QLabel 1 추가
self.label1 = QLabel(self)
self.label1.setGeometry(10, 10, 100, 30)
self.label1.setText("Label 1")
self.label1.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
# QLabel 2 추가
self.label2 = QLabel(self)
self.label2.setGeometry(10, 40, 100, 30)
self.label2.setText("Label 2")
self.label2.setAlignment(Qt.AlignCenter)
# QLabel 3 추가
self.label3 = QLabel(self)
self.label3.setGeometry(10, 100, 100, 30)
self.label3.setText("Label 3")
self.label3.setAlignment(Qt.AlignLeft)
▼ 위의 소스를 실행한 결과입니다. 3개의 라벨에 위치를 다르게 정렬시켰습니다.
![](https://blog.kakaocdn.net/dn/5mtzr/btsInk2cHjn/mJJocYtPeU7elwOwRSQnf1/img.png)
◎ 3. 텍스트 스타일 적용하기 |
▼ QLabel 객체에 폰트 디자인을 적용하기 위해서 setFont() 함수를 사용합니다. 인수는 QFont 객체입니다. QFont 객체 생성을 위한 함수는 아래와 같습니다. 첫 번째 인수인 family 는 폰트명입니다. 그리고 pointSize 는 폰트 사이즈입니다. weight 는 폰트의 두께를 말하는데, 1~99 까지 입력이 가능하고 QFont 에서 제공하는 상수 변수를 사용할 수 있습니다.
QFont(const QString &family, int pointSize = -1, int weight = -1, bool italic = false)
QFont 의 3번째 인수로 입력할 수 있는 상수 값은 아래와 같습니다.
![](https://blog.kakaocdn.net/dn/dPPyb6/btsIlCwhi8I/1WyeRzGXEWKbvrDktquSK0/img.png)
▼ 폰트 서식 변경을 위한 setFont() 함수의 샘플 코드는 아래와 같습니다. 첫 번째 라벨인 label1 의 인수로 입력한 QFont 객체는 “D2Coding” 폰트와 사이즈 30, 두께 QFont.Bold 로 만들었습니다.
# QLabel 1 추가
self.label1 = QLabel(self)
self.label1.setGeometry(10, 10, 100, 50)
self.label1.setText("Label 1")
self.label1.setFont(QFont("D2Coding", 30, QFont.Bold))
# QLabel 2 추가
self.label2 = QLabel(self)
self.label2.setGeometry(10, 70, 100, 50)
self.label2.setText("Label 2")
self.label2.setFont(QFont("Arial", 14, QFont.Black))
▼ 두 개의 라벨에 폰트 코드를 적용한 결과는 아래와 같습니다.
![](https://blog.kakaocdn.net/dn/yrGM6/btsIlTdlQsA/uHK4MZYe5C2s4jCWR9Q8w0/img.png)
◎ 4. QLabel 에 이미지 입히기 |
▼ QLabel 은 텍스트뿐만 아니라 이미지 추가도 가능합니다. QLabel 에 이미지를 추가할 때 사용하는 함수는 setPixmap(QPixmap) 입니다. 인수로 QPixmap 객체가 필요합니다. QPixmap 클래스로 이미지 경로를 입력해서 객체를 생성하고 이미지가 클 경우 라벨에 맞추기 위해 scaled() 를 이용해서 크기를 조절합니다.
from PyQt5.QtWidgets import QLabel
from PyQt5.QtGui import QPixmap
# QLabel 2 추가
self.label2 = QLabel(self)
self.label2.setGeometry(10, 70, 100, 50)
# 이미지 추가
self.pixmap = QPixmap('btn.png')
self.repixmap = self.pixmap.scaled(QSize(50, 50)) # 크기 조절
self.label2.setPixmap(self.repixmap)
![](https://blog.kakaocdn.net/dn/cYeH7I/btsInFEXr8W/KBok3ZUHxiwPeaWHIXXRk1/img.png)
◎ 5. QLabel 디자인 하기 |
▼ 마지막으로 QLabel 위젯의 디자인을 변경하는 방법입니다. 다른 위젯과 동일하게 CSS 적용 함수로 QLabel 디자인이 가능합니다. CSS 디자인 적용 함수는 setStyleShee() 입니다. 인수로 적용할 CSS 코드 값을 텍스트로 입력합니다.
# QLabel 1 추가
self.label1 = QLabel(self)
self.label1.setGeometry(10, 10, 100, 30)
self.label1.setText("Label 1")
self.label1.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
self.label1.setStyleSheet("border-radius: 15px;"
"border: 1px solid red;"
"background-color: #BBDEFB")
▼ 첫 번째 제일 상단에 있는 라벨의 CSS 를 적용한 결과는 다음과 같습니다.
![](https://blog.kakaocdn.net/dn/bjnZug/btsInGjyYSs/ZkM5ofqK3brUx6ZVnPidLK/img.png)