본문으로 바로가기

파이썬(Python) PyQt5 QLabel 라벨 사용하기

category 파이썬/PyQt5 2021. 11. 11. 21:00
반응형

QLabel 은 화면에서 한줄짜리 글자를 보여주고 싶을 때 사용하는 위젯입니다. 버튼 같은 위젯과 달리 사용자와 상호작용을 하지 않습니다. 단순히 텍스트와 이미지를 보여주는 용도로 사용합니다. 라벨의 틀 안에 위젯은 좌우, 수직 정렬이 가능하며, 함수를 이용해서 CSS 디자인을 적용할 수 있습니다.

 

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")

 

소스를 실행한 결과는 아래와 같습니다.

 

2. QLabel 내에 Text 정렬하기

 

기본 라벨내의 텍스트 위치는 왼쪽입니다. 함수는 setAlignment(Qt.Alignment) 를 사용합니다. 함수의 인수 값으로 정렬 속성이 필요한데, 정렬 상수 플래그 값은 아래 표와 같습니다. 좌우, 상하로 구분되어 있습니다.

 

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개의 라벨에 위치를 다르게 정렬시켰습니다.

 

2. 텍스트 스타일 적용하기

 

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번째 인수로 입력할 수 있는 상수 값은 아래와 같습니다.

 

폰트 서식 변경을 위한 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))

 

두 개의 라벨에 폰트 코드를 적용한 결과는 아래와 같습니다.

 

3. 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)

 

4. 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 를 적용한 결과는 다음과 같습니다.

반응형