PyQt5 教程 - 标签
Jinku Hu
2024年2月15日
我们将学习在本教程中使用标签控件 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)
第一个标签 labelA
是 QtWidgets.QtLabel
,QtWidgets
控件 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
中显示图像。QPixmap
是 QtGui
中的模块,它是 Qt
采用的图像。
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 标签对齐
标签文本默认情况下为左对齐,我们可以使用 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
从下图可以看出,标签是根据其对齐属性来对齐的。