PyQt5 Tutorial - Etichetta

Jinku Hu 15 febbraio 2024
  1. Widget per etichette PyQt5
  2. PyQt5 QLabel Set Font
  3. Allineamento delle etichette PyQt5
PyQt5 Tutorial - Etichetta

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.

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.

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

Autore: 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