PyQt5 教程 - 标签

  1. PyQt5 标签控件 QLabel
  2. PyQt5 QLabel 设置字体
  3. PyQt5 标签对齐

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

PyQt5 标签控件 QLabel

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

QLabel.py
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)。你可以参考上一节中的 setGeometry 解释。

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 设置字体

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

QLabel_Set Font.py
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 标签对齐