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