PyQt5 Tutorial - Etiqueta

  1. PyQt5 Label Widget
  2. PyQt5 QLabel Set Font
  3. PyQt5 Alinhamento de Etiquetas

Vamos aprender a utilizar o widget de etiqueta PyQt5 QLabel neste tutorial.

PyQt5 Label Widget

Vamos adicionar duas etiquetas à nossa janela, onde uma dessas etiquetas vai segurar algum texto e uma dessas etiquetas vai segurar uma imagem.

QLabel.py
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()

Onde,

labelA = QtWidgets.QLabel(w)

O primeiro rótulo labelA é um QtWidgets.QtLabel e o QtWidgets-w está entre parênteses porque diz ao programa que o rótulo labelA é adicionado à janela w.

labelA.setText('Label Example')

O labelA.setText define o texto no rótulo.

windowExample.setGeometry(100, 100, 300, 200)

Ele define o tamanho da janela para ser (300, 200) e a coordenada do canto superior esquerdo para ser (100, 100). Você pode consultar a explicação setGeometry em última seção.

labelA.move(100, 40)
labelB.move(120, 120)

O método move() move a etiqueta para a direção da direita e para baixo. Como labelA.move(100, 40) move o labelA para a coordenada de (100, 40) em relação ao canto superior esquerdo da janela.

labelB.setPixmap(QtGui.QPixmap('globe.png'))

Ele exibe imagens no labelB. O QPixmap é o módulo em QtGui e leva uma imagem de Qt.

Rótulo PyQt5

PyQt5 QLabel Set Font

No exemplo acima, usamos a fonte padrão no widget da etiqueta, e você poderia especificar a fonte preferida como tamanho, peso e família de fontes do texto da etiqueta.

QLabel_Set Font.py
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))

O método setFont() define a fonte da etiqueta. A classe QFont especifica uma fonte com atributos específicos.

PyQt5 Fonte do Conjunto de Etiqueta

PyQt5 Alinhamento de Etiquetas

O texto da etiqueta é por padrão alinhado à borda esquerda, e esta propriedade pode ser modificada com o método 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)

Ele define a largura fixa para as três etiquetas, caso contrário, a largura da etiqueta é automaticamente definida de acordo com o comprimento do texto da etiqueta.

labelLeft.setStyleSheet("border-radius: 25px;border: 1px solid black;")

Poderíamos utilizar a folha de estilo CSS-alike para definir os estilos dos widgets PyQt5. Aqui, a borda da etiqueta é definida para ser preta sólida com a borda de 1px, e o raio da borda é especificado como 25px.

labelLeft.setAlignment(QtCore.Qt.AlignLeft)
labelRight.setAlignment(QtCore.Qt.AlignRight)
labelCenter.setAlignment(QtCore.Qt.AlignCenter)

A propriedade de alinhamento do widget é definida pelo método setAlignment e suas opções estão no módulo PyQt5.QtCore.Qt, como

  • PyQt5.QtCore.Qt.AlignLeft
  • PyQt5.QtCore.Qt.AlignRight
  • PyQt5.QtCore.Qt.AlignCenter

Como você pode ver na imagem abaixo, as etiquetas são alinhadas de acordo com suas propriedades de alinhamento.

Alinhamento das etiquetas PyQt5