PyQt5 Tutorial - Etiqueta

Jinku Hu 15 fevereiro 2024
  1. PyQt5 Label Widget
  2. PyQt5 QLabel Set Font
  3. PyQt5 Alinhamento de Etiquetas
PyQt5 Tutorial - Etiqueta

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.

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.

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

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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