PyQt5 튜토리얼-라벨
이 튜토리얼에서 PyQt5 라벨 위젯 QLabel
을 사용하는 법을 배웁니다.
PyQt5 라벨 위젯
우리는 창에 두 개의 레이블을 추가 할 것입니다.이 레이블 중 하나는 일부 텍스트를 보유하고 해당 레이블 중 하나는 이미지를 보유합니다.
import sys
from PyQt5 import QtWidgets, QtGui
def basicWindow():
app = QtWidgets.QApplication(sys.argv)
windowExample = QtWidgets.QWidget()
labelA = QtWidgets.QLabel(windowExample)
labelB = QtWidgets.QLabel(windowExample)
labelA.setText("Label Example")
labelB.setPixmap(QtGui.QPixmap("python.jpg"))
windowExample.setWindowTitle("Label Example")
windowExample.setGeometry(100, 100, 300, 200)
labelA.move(100, 40)
labelB.move(120, 120)
windowExample.show()
sys.exit(app.exec_())
basicWindow()
어디,
labelA = QtWidgets.QLabel(w)
첫 번째 레이블 labelA
는 QtWidgets.QtLabel
이고 QtWidgets
-w
는 레이블 labelA
가 창 w
에 추가되었음을 프로그램에 알려주기 때문에 괄호 안에 있습니다.
labelA.setText("Label Example")
labelA.setText
는 레이블의 텍스트를 설정합니다.
windowExample.setGeometry(100, 100, 300, 200)
창 크기를(300, 200)
으로 설정하고 왼쪽 상단 모서리 좌표를(100, 100)
으로 설정합니다. 마지막 섹션에서 setGeometry
설명을 참조 할 수 있습니다.
labelA.move(100, 40)
labelB.move(120, 120)
move()
메소드는 라벨을 좌우로 움직입니다. labelA.move(100, 40)
과 같이 labelA
를 창의 왼쪽 위 모서리를 기준으로(100, 40)
의 좌표로 이동합니다.
labelB.setPixmap(QtGui.QPixmap("globe.png"))
labelB
에 이미지를 표시합니다. QPixmap
은 QtGui
의 모듈이며 Qt
의 이미지를 가져옵니다.
PyQt5 QLabel
폰트 설정
위의 예에서는 레이블 위젯에서 기본 글꼴을 사용하며 레이블 텍스트의 크기, 무게 및 글꼴 모음과 같은 기본 글꼴을 지정할 수 있습니다.
import sys
from PyQt5 import QtWidgets, QtGui
def basicWindow():
app = QtWidgets.QApplication(sys.argv)
windowExample = QtWidgets.QWidget()
labelA = QtWidgets.QLabel(windowExample)
labelB = QtWidgets.QLabel(windowExample)
labelA.setText("Times Font")
labelA.setFont(QtGui.QFont("Times", 12, QtGui.QFont.Bold))
labelB.setText("Arial Font")
labelB.setFont(QtGui.QFont("Arial", 14, QtGui.QFont.Black))
windowExample.setWindowTitle("Label Example")
windowExample.setGeometry(100, 100, 300, 200)
labelA.move(100, 40)
labelB.move(100, 120)
windowExample.show()
sys.exit(app.exec_())
basicWindow()
labelA.setFont(QtGui.QFont("Times", 12, QtGui.QFont.Bold))
setFont()
메소드는 레이블의 글꼴을 설정합니다. QFont
클래스는 특정 속성을 가진 글꼴을 지정합니다.
PyQt5 라벨 정렬
레이블 텍스트는 기본적으로 왼쪽 가장자리에 정렬되며이 속성은 QLabel.setAlignment()
메서드를 사용하여 수정할 수 있습니다.
import sys
from PyQt5 import QtWidgets, QtGui, QtCore
def basicWindow():
app = QtWidgets.QApplication(sys.argv)
windowExample = QtWidgets.QWidget()
labelLeft = QtWidgets.QLabel(windowExample)
labelRight = QtWidgets.QLabel(windowExample)
labelCenter = QtWidgets.QLabel(windowExample)
labelLeft.setText("Left Align")
labelRight.setText("Right Align")
labelCenter.setText("Center Align")
windowExample.setWindowTitle("Label Align Example")
windowExample.setGeometry(100, 100, 300, 200)
labelLeft.setFixedWidth(160)
labelRight.setFixedWidth(160)
labelCenter.setFixedWidth(160)
labelLeft.setStyleSheet("border-radius: 25px;border: 1px solid black;")
labelRight.setStyleSheet("border-radius: 25px;border: 1px solid black;")
labelCenter.setStyleSheet("border-radius: 25px;border: 1px solid black;")
labelLeft.setAlignment(QtCore.Qt.AlignLeft)
labelRight.setAlignment(QtCore.Qt.AlignRight)
labelCenter.setAlignment(QtCore.Qt.AlignCenter)
labelLeft.move(80, 40)
labelRight.move(80, 80)
labelCenter.move(80, 120)
windowExample.show()
sys.exit(app.exec_())
basicWindow()
labelLeft.setFixedWidth(160)
labelRight.setFixedWidth(160)
labelCenter.setFixedWidth(160)
고정 너비를 세 개의 레이블로 설정합니다. 그렇지 않으면 레이블 너비가 레이블 텍스트 길이에 따라 자동으로 설정됩니다.
labelLeft.setStyleSheet("border-radius: 25px;border: 1px solid black;")
CSS 와 비슷한 스타일 시트를 사용하여 PyQt5 위젯의 스타일을 설정할 수 있습니다. 여기에서 레이블의 테두리는 검은 색으로 설정되고 테두리는 1px 이며 테두리 반경은 25px 로 지정됩니다.
labelLeft.setAlignment(QtCore.Qt.AlignLeft)
labelRight.setAlignment(QtCore.Qt.AlignRight)
labelCenter.setAlignment(QtCore.Qt.AlignCenter)
위젯의 정렬 속성은 setAlignment
메소드에 의해 설정되며 옵션은 PyQt5.QtCore.Qt
모듈에 있습니다.
PyQt5.QtCore.Qt.AlignLeft
PyQt5.QtCore.Qt.AlignRight
PyQt5.QtCore.Qt.AlignCenter
아래 이미지에서 볼 수 있듯이 레이블은 정렬 속성에 따라 정렬됩니다.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook