PyQt5 教程 - 标签

Jinku Hu 2024年2月15日
  1. PyQt5 标签控件 QLabel
  2. PyQt5 QLabel 设置字体
  3. PyQt5 标签对齐
PyQt5 教程 - 标签

我们将学习在本教程中使用标签控件 QLabel

PyQt5 标签控件 QLabel

我们将在窗口中添加两个标签,其中一个标签使用文字,另外一个标签使用图像。

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

其中,

labelA = QtWidgets.QLabel(w)

第一个标签 labelAQtWidgets.QtLabelQtWidgets 控件 w 在括号中,这是因为它要告诉程序标签 labelA 被添加到窗口 w

labelA.setText("Label Example")

labelA.setText 设置标签中的文本。

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

它将窗口大小设置为 (300,200) 并将左上角坐标设置为 (100,100)

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

move() 方法将标签移动到右下方向。就像 labelA.move(100,40) 一样,将 labelA 移动到相对于窗口左上角的 (100,40) 坐标。

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

它在 labelB 中显示图像。QPixmapQtGui 中的模块,它是 Qt 采用的图像。

PyQt5 标签

PyQt5 QLabel 设置字体

在上面的示例中,我们使用标签控件中的默认字体,你可以指定想要的字体,如标签文本字体的大小、重度和字体系列等。

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() 方法设置标签的字体。QFont 类指定具有特定属性的字体。

PyQt5 标签集字体

PyQt5 标签对齐

标签文本默认情况下为左对齐,我们可以使用 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)

它将三个标签设置为固定宽度 160,假如不设置的话,它将根据标签文本长度自动设置标签宽度。

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

我们可以使用类似 CSS 的样式表来设置 PyQt5 控件的样式。在此,标签的边界设置为纯黑色,边界为 1px,边界半径指定为 25px

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

控件的对齐属性由 setAlignment 方法设置,其选项位于模块 PyQt5.QtCore.Qt 中,例如

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

从下图可以看出,标签是根据其对齐属性来对齐的。

PyQt5 标签对齐

作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 创始人。Jinku 在机器人和汽车行业工作了8多年。他在自动测试、远程测试及从耐久性测试中创建报告时磨练了自己的编程技能。他拥有电气/电子工程背景,但他也扩展了自己的兴趣到嵌入式电子、嵌入式编程以及前端和后端编程。

LinkedIn Facebook