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)
第一个标签 labelA
是 QtWidgets.QtLabel
,QtWidgets
控件 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
中显示图像。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
从下图可以看出,标签是根据其对齐属性来对齐的。
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