PyQt5 Tutorial - Etichetta

  1. Widget per etichette PyQt5
  2. PyQt5 QLabel Set Font
  3. Allineamento delle etichette PyQt5

Impareremo ad usare il widget di etichette PyQt5 QLabel in questo tutorial.

Widget per etichette PyQt5

Aggiungeremo due etichette alla nostra finestra, dove una di queste etichette conterrà del testo e l’altra un’immagine.

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

Dove,

labelA = QtWidgets.QLabel(w)

La prima etichetta labelA è un QtWidgets.QtLabel e il QtWidgets- w è tra parentesi perché dice al programma che l’etichetta labelA viene aggiunta alla finestra w.

labelA.setText('Label Example')

labelA.setText imposta il testo nell’etichetta.

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

Imposta la dimensione della finestra come (300, 200) e la coordinata dell’angolo superiore sinistro come (100, 100). Si può fare riferimento alla spiegazione setGeometry in ultima sezione.

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

Il metodo move() sposta l’etichetta verso destra e verso il basso. Come labelA.move(100, 40) sposta la labelA alla coordinata di (100, 40) rispetto all’angolo superiore sinistro della finestra.

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

Visualizza le immagini nella labelB. QPixmap è il modulo in QtGui e prende un’immagine di Qt.

Etichetta PyQt5

PyQt5 QLabel Set Font

Nell’esempio sopra riportato, usiamo il font predefinito nel widget delle etichette, ed è possibile specificare il font preferito come dimensione, peso e famiglia di caratteri del testo dell’etichetta.

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

Il metodo setFont() imposta il font dell’etichetta. La classe QFont specifica un font con specifici attributi.

PyQt5 Label Set Font

Allineamento delle etichette PyQt5

Il testo dell’etichetta è di default allineato al bordo sinistro, e questa proprietà potrebbe essere modificata con il metodo 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)

Esso imposta la larghezza fissa alle tre etichette, altrimenti la larghezza dell’etichetta viene impostata automaticamente in base alla lunghezza del testo dell’etichetta.

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

Si potrebbe usare un foglio di stile simile a CSS per impostare gli stili dei widget PyQt5. Qui, il bordo dell’etichetta è impostato per essere nero solido con il bordo di 1px, e il raggio del bordo è specificato come 25px.

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

La proprietà di allineamento del widget è impostata dal metodo setAlignment e le sue opzioni sono nel modulo PyQt5.QtCore.Qt, come

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

Come si può vedere dall’immagine sottostante, le etichette sono allineate secondo le loro proprietà di allineamento.

Allineamento delle etichette PyQt5