PyQt5 tutorial - label

  1. PyQt5-labelwidget
  2. PyQt5 QLabel Lettertype instellen
  3. PyQt5 label uitlijning

In deze tutorial leren we QLabel om de PyQt5 label widget te gebruiken.

PyQt5-labelwidget

We gaan twee labels toevoegen aan ons venster, waar een van die labels wat tekst zal bevatten en een van die labels een afbeelding zal bevatten.

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

Waar,

labelA = QtWidgets.QLabel(w)

Het eerste label labelA is een QtWidgets.QtLabel en het QtWidgets - w staat tussen haakjes omdat het programma aangeeft dat het label labelA is toegevoegd aan het venster w.

labelA.setText('Label Example')

labelA.setText zet de tekst op het label.

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

Het stelt de venstergrootte in (300, 200) en de linkerbovenhoekcoördinaat op (100, 100). Je zou kunnen verwijzen naar de setGeometry uitleg in de laatste sectie.

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

move() methode verplaatst het label naar rechts en omlaag. Zoals labelA.move(100, 40) verplaatst de labelA naar de coördinaat van (100, 40) ten opzichte van de linkerbovenhoek van het venster.

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

Het toont afbeeldingen in de labelB . QPixmap is de module QtGui en neemt een afbeelding van Qt.

PyQt5-label

PyQt5 QLabel Lettertype instellen

In het bovenstaande voorbeeld gebruiken we het standaardlettertype in de labelwidget en je kan het gewenste lettertype opgeven, zoals grootte, gewicht en lettertypefamilie van de labeltekst.

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

setFont() methode stelt het lettertype van het label in. De QFont klasse geeft een lettertype met specifieke kenmerken aan.

PyQt5-labelsetlettertype

PyQt5 label uitlijning

De labeltekst is standaard uitgelijnd op de linkerrand en deze eigenschap kan met de methode QLabel.setAlignment() worden gewijzigd.

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)

Het stelt de vaste breedte in op de drie labels, anders wordt de labelbreedte automatisch ingesteld op basis van de lengte van de labeltekst.

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

We kunnen CSS-achtige stijlpagina gebruiken om de stijlen van de PyQt5-widgets in te stellen. Hier is de rand van het label effen zwart met de rand met 1px en wordt de randradius opgegeven als 25px.

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

De uitlijningseigenschap van de widget wordt ingesteld door de methode setAlignment en de opties bevinden zich in de module PyQt5.QtCore.Qt , zoals

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

Zoals u in de onderstaande afbeelding kunt zien, worden de labels uitgelijnd op basis van hun uitlijningseigenschappen.

PyQt5 labeluitlijning