PyQt5 Tutorial - Label

Jinku Hu 3 Januar 2023
  1. PyQt5 Label-Widget
  2. PyQt5 QLabel Schriftart setzen
  3. PyQt5 Label Ausrichtung
PyQt5 Tutorial - Label

Wir werden in diesem Tutorial lernen, das PyQt5-Label-Widget QLabel zu verwenden.

PyQt5 Label-Widget

Wir werden zwei Etiketten in unserem Fenster hinzufügen, wobei eines dieser Etiketten etwas Text und eines dieser Etiketten ein Bild enthält.

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

Wo,

labelA = QtWidgets.QLabel(w)

Das erste Label labelA ist ein QtWidgets.QtLabel und das QtWidgets- w steht in Klammern, weil es dem Programm mitteilt, dass das Label labelA dem Fenster w hinzugefügt wurde.

labelA.setText("Label Example")

labelA.setText setzt den Text in der Beschriftung.

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

Es setzt die Fenstergroesse auf (300, 200) und die linke obere Eckkoordinate auf (100, 100). Sie könnten sich auf die setGeometry Erklärung in letzter Abschnitt beziehen.

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

Die Methode move() bewegt das Label in Richtung rechts und nach unten. Wie labelA.move(100, 40) verschiebt das labelA auf die Koordinate von (100, 40) relativ zur linken oberen Ecke des Fensters.

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

Es zeigt Bilder im LabelB an. QPixmap ist das Modul in QtGui und es nimmt ein Bild von Qt auf.

PyQt5 Beschriftung

PyQt5 QLabel Schriftart setzen

Im obigen Beispiel verwenden wir die Standardschriftart im Etiketten-Widget, und Sie könnten die bevorzugte Schriftart wie Größe, Gewicht und Schriftfamilie des Etikettentextes angeben.

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

Die Methode setFont() setzt die Schriftart des Labels. Die Klasse QFont spezifiziert eine Schriftart mit spezifischen Attributen.

PyQt5 Label Schriftart setzen

PyQt5 Label Ausrichtung

Der Labeltext ist standardmäßig am linken Rand ausgerichtet, und diese Eigenschaft kann mit der Methode QLabel.setAlignment() modifiziert werden.

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)

Sie setzt die feste Breite auf die drei Etiketten, andernfalls wird die Etikettenbreite automatisch entsprechend der Länge des Etikettentextes gesetzt.

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

Wir könnten ein CSS-ähnliches Stylesheet verwenden, um die Stile der PyQt5-Widgets zu setzen. Hier wird der Rand des Labels auf schwarz mit einer Umrandung von 1px gesetzt, und der Randradius wird mit 25px angegeben.

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

Die Alignment-Eigenschaft des Widgets wird durch die Methode setAlignment gesetzt und seine Optionen befinden sich im Modul PyQt5.QtCore.Qt, wie

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

Wie Sie in der Abbildung unten sehen konnten, werden die Etiketten entsprechend ihrer Ausrichtungseigenschaften ausgerichtet.

PyQt5 Etikettenausrichtung

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