Dominando o QLabel do PyQt5: Um Guia Completo
O widget QLabel é uma pedra angular do desenvolvimento de interfaces gráficas com PyQt5, oferecendo uma maneira simples, porém versátil, de exibir texto e imagens. Este tutorial mergulha em suas funcionalidades, fornecendo exemplos práticos e melhores práticas para elevar suas habilidades em PyQt5.
Sumário
- Criando e Exibindo Widgets QLabel
- Estilizando Texto: Fontes, Cores e HTML
- Alinhamento de Texto Preciso
- Exibindo Imagens com QLabel
- Quebra de Palavras e Ajuste do Tamanho do Texto
- Técnicas Avançadas: Sinais e Slots
1. Criando e Exibindo Widgets QLabel
Vamos começar criando um QLabel básico para exibir texto. Isso envolve instanciar a classe QLabel e definir seu widget pai.
import sys
from PyQt5.QtWidgets import QApplication, QLabel, QWidget
app = QApplication(sys.argv)
window = QWidget()
label = QLabel("Olá, PyQt5!", window)
label.show()
window.show()
sys.exit(app.exec_())
Este trecho de código cria uma janela simples com o texto “Olá, PyQt5!” exibido. O QLabel
é filho do QWidget
, garantindo a exibição correta dentro da janela.
2. Estilizando Texto: Fontes, Cores e HTML
Além da exibição de texto simples, você pode personalizar significativamente a aparência do QLabel. Vamos explorar a estilização de fontes, alterações de cor e o uso de HTML para formatação de texto enriquecido.
import sys
from PyQt5.QtWidgets import QApplication, QLabel, QWidget
from PyQt5.QtGui import QFont, QColor
app = QApplication(sys.argv)
window = QWidget()
label = QLabel("Olá, PyQt5!", window) # Texto em negrito usando HTML
label.setFont(QFont('Arial', 14))
label.setStyleSheet("color: rgb(0, 128, 0);") # Cor do texto verde
label.show()
window.show()
sys.exit(app.exec_())
Este exemplo demonstra a definição de uma fonte específica (Arial, tamanho 14) e uma cor verde usando folhas de estilo. Observe o uso de tags HTML () para texto em negrito dentro do texto do rótulo.
3. Alinhamento de Texto Preciso
Controle a posição do texto dentro do QLabel usando o método setAlignment()
e os flags de alinhamento do Qt.
import sys
from PyQt5.QtWidgets import QApplication, QLabel, QWidget
from PyQt5.QtCore import Qt
app = QApplication(sys.argv)
window = QWidget()
label = QLabel("Texto Centralizado", window)
label.setAlignment(Qt.AlignCenter) # Alinhamento centralizado
label.show()
window.show()
sys.exit(app.exec_())
Isso centraliza o texto. Explore outros flags como Qt.AlignRight
, Qt.AlignTop
, Qt.AlignBottom
e suas combinações para um controle mais preciso.
4. Exibindo Imagens com QLabel
QLabel não serve apenas para texto; ele também pode exibir imagens. Use o método setPixmap()
com um objeto QPixmap
.
import sys
from PyQt5.QtWidgets import QApplication, QLabel, QWidget
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import Qt
app = QApplication(sys.argv)
window = QWidget()
pixmap = QPixmap('caminho/para/sua/imagem.png') # Substitua pelo caminho da sua imagem
label = QLabel(window)
label.setPixmap(pixmap)
label.setAlignment(Qt.AlignCenter)
label.show()
window.show()
sys.exit(app.exec_())
Lembre-se de substituir 'caminho/para/sua/imagem.png'
pelo caminho real para o seu arquivo de imagem.
5. Quebra de Palavras e Ajuste do Tamanho do Texto
Para strings de texto longas, ative a quebra de palavras para evitar que o texto ultrapasse os limites do rótulo. Você também pode ajustar a política de tamanho do rótulo para acomodar o texto.
import sys
from PyQt5.QtWidgets import QApplication, QLabel, QWidget
from PyQt5.QtCore import Qt
app = QApplication(sys.argv)
window = QWidget()
label = QLabel("Esta é uma string de texto longa que precisa de quebra de palavras.", window)
label.setWordWrap(True) # Ativa a quebra de palavras
label.adjustSize() # Ajusta o tamanho do rótulo para caber no texto
label.show()
window.show()
sys.exit(app.exec_())
setWordWrap(True)
ativa a quebra de palavras, e adjustSize()
garante que o rótulo redimensione automaticamente para caber no texto quebrado.
6. Técnicas Avançadas: Sinais e Slots
QLabel pode emitir sinais, permitindo a interação com outras partes do seu aplicativo. Por exemplo, você pode conectar um sinal a um slot para executar ações quando o rótulo for clicado.
(Exemplo usando mousePressEvent omitido por brevidade, mas facilmente encontrado na documentação do PyQt5)