QLabel 标签
QLabel 是 PyQt6 里用来建立文字或图片的标签控件,这篇教学会介绍如何在 PyQt6 窗口里加入 QLabel 标签,并进行像是文字字型、大小、颜色和位置...等参数设定。
快速预览:
加入 QLabel 标签
QLabel 位置设定
QLabel 文字设定
QLabel 加入图片
使用 StyleSheet 设定 QLabel 样式
加入 QLabel 标签
建立 PyQt6 窗口物件后,透过 QtWidgets.QLabel(widget
) 方法,就能在指定的控件中建立标签,下方的程序执行后,会加入一个 QLabel 标签,并使用 setText() 方法加入文字。
from PyQt6 import QtWidgetsimport sysapp = QtWidgets.QApplication(sys.argv)Form = QtWidgets.QWidget()Form.setWindowTitle('千牛编程思维')Form.resize(320, 240)label = QtWidgets.QLabel(Form) label.setText('hello world') Form.show()sys.exit(app.exec())
类写法:
# 导入PyQt6库中的QtWidgets模块和sys模块from PyQt6 import QtWidgetsimport sys# 创建一个名为MyWidget的类,继承自QtWidgets.QWidget类class MyWidget(QtWidgets.QWidget):# 构造函数def __init__(self):super().__init__()self.setWindowTitle('千牛编程思维') # 设置窗口标题self.resize(320, 240) # 设置窗口尺寸self.ui() # 调用ui函数# ui函数用于创建用户界面def ui(self):self.label = QtWidgets.QLabel(self) # 创建QLabel对象并将其添加到窗口上self.label.setText('hello world') # 在标签中显示文本if __name__ == '__main__':app = QtWidgets.QApplication(sys.argv) # 创建Qt应用程序对象Form = MyWidget() # 创建MyWidget对象Form.show() # 显示窗口sys.exit(app.exec()) # 运行应用程序并退出
QLabel 位置设定
透过下列 QLabel 方法,可以将 QLabel 控件定位到指定的位置:
方法 | 参数 | 说明 |
---|---|---|
移动() | x, y | 设定 QLabel 在摆放的父控件中的 xy 座标,x 往右为正,y 往下为正,尺寸根据内容自动延伸。 |
设置几何() | x, y, w, h | 设定 QLabel 在摆放的父控件中的 xy 座标和长宽尺寸,x 往右为正,y 往下为正,如果超过长宽尺寸,预设会被裁切无法显示。 |
setContentMargins() | 左、上、右、下 | QLabel 的边界宽度。 |
下方的程序执行后会放入两个 QLabel,一个使用 move() 定位在 (50,50) 位置,另外一个使用 setGeometry() 方法定位在 (50, 80) 的位置并设定大小为 100x100。
from PyQt6 import QtWidgetsimport sysapp = QtWidgets.QApplication(sys.argv)Form = QtWidgets.QWidget()Form.setWindowTitle('千牛编程思维')Form.resize(320, 240)label1 = QtWidgets.QLabel(Form)label1.setText('hello world, how are you?')label1.move(50, 50)label2 = QtWidgets.QLabel(Form)label2.setText('hello world, how are you?')label2.setGeometry(50, 80, 100, 100)Form.show()sys.exit(app.exec())
类写法:
from PyQt6 import QtWidgetsimport sysclass MyWidget(QtWidgets.QWidget):def __init__(self):super().__init__()self.setWindowTitle('千牛编程思维')self.resize(320, 240)self.ui()def ui(self):self.label1 = QtWidgets.QLabel(self)self.label1.setText('hello world, how are you?')self.label1.move(50, 50)self.label2 = QtWidgets.QLabel(self)self.label2.setText('hello world, how are you?')self.label2.setGeometry(50, 80, 100, 100)if __name__ == '__main__':app = QtWidgets.QApplication(sys.argv)Form = MyWidget()Form.show()sys.exit(app.exec())
QLabel 文字设定
透过下列常用的 QLabel 方法,可以设定 QLabel 中的文字样式 ( 设定字体需要搭配 QtGui,设定对齐要搭配 QtCore,需要额外载入对应模组 ):
方法 | 参数 | 说明 |
---|---|---|
设置文字换行() | 布尔 | 是否换行,预设 Fasle 不换行,设定 True 换行。 |
setAlignment() | QtCore.Qt.AlignmentFlag | 对齐方式,预设 ,可设定 、 ( 此处与 PyQt5 不同 )。QtCore.Qt.AlignmentFlag.AlignCenter``QtCore.Qt.AlignmentFlag.AlignRight``QtCore.Qt.AlignmentFlag.AlignLeft |
setFont() | QtGui.QFont() | 文字样式设定,需搭配 QtGui.QFont()。 |
使用 QtGui.QFont() 产生的文字样式,可以使用下列方法设定:
方法 | 参数 | 说明 |
---|---|---|
font.setFamily() | 名字 | 字体名称。 |
设置点大小 | 你在那里 | 字体大小。 |
设置粗体() | 布尔 | 是否粗体,预设 False。 |
设置斜体() | 布尔 | 是否斜体,预设 False。 |
setStrikeOut() | 布尔 | 是否加入删除线,预设 False。 |
设置下划线() | 布尔 | 是否加入底线,预设 False。 |
下方的程序执行后,开启的窗口中会出现一个设定过样式的 QLabel。
from PyQt6 import QtWidgets, QtGui, QtCoreimport sysapp = QtWidgets.QApplication(sys.argv)Form = QtWidgets.QWidget()Form.setWindowTitle('千牛编程思维')Form.resize(320, 240)label = QtWidgets.QLabel(Form)label.setText('hello world, how are you?')label.setGeometry(30, 30, 100, 100)label.setContentsMargins(0,0,0,0) # 设定边界label.setWordWrap(True) # 可以换行label.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) # 对齐方式font = QtGui.QFont() # 建立文字样式控件font.setFamily('Verdana') # 设定字体font.setPointSize(10) # 文字大小font.setBold(True) # 粗体font.setItalic(True) # 斜体font.setStrikeOut(True) # 删除线font.setUnderline(True) # 底线label.setFont(font) # 设定文字样式Form.show()sys.exit(app.exec())
类写法:
from PyQt6 import QtWidgets, QtGui, QtCoreimport sysclass MyWidget(QtWidgets.QWidget):def __init__(self):super().__init__()self.setWindowTitle('千牛编程思维')self.resize(320, 240)self.ui()def ui(self):self.label = QtWidgets.QLabel(self)self.label.setText('hello world, how are you?')self.label.setGeometry(30, 30, 200, 200)self.label.setContentsMargins(0,0,0,0) # 设定边界self.label.setWordWrap(True) # 可以换行self.label.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) # 对齐方式font = QtGui.QFont() # 建立文字样式控件font.setFamily('Verdana') # 设定字体font.setPointSize(10) # 文字大小font.setBold(True) # 粗体font.setItalic(True) # 斜体font.setStrikeOut(True) # 删除线font.setUnderline(True) # 底线self.label.setFont(font) # 设定文字样式if __name__ == '__main__':app = QtWidgets.QApplication(sys.argv)Form = MyWidget()Form.show()sys.exit(app.exec())
QLabel 加入图片
如果要在 QLabel 里加入图片,需要先使用 QtGui.QImage() 方法读取图片,接著使用 setPixmap() 方法加入图片,详细步骤可以参考下方程序:
from PyQt6 import QtWidgets, QtGuiimport sysapp = QtWidgets.QApplication(sys.argv)Form = QtWidgets.QWidget()Form.setWindowTitle('千牛编程思维')Form.resize(800, 600)label = QtWidgets.QLabel(Form)label.setGeometry(20, 20, 300, 500)img = QtGui.QImage('Mona.jpg') # 读取图片label.setPixmap(QtGui.QPixmap.fromImage(img)) # 加入图片Form.show()sys.exit(app.exec())
类写法:
from PyQt6 import QtWidgets, QtGui, QtCoreimport sysclass MyWidget(QtWidgets.QWidget):def __init__(self):super().__init__()self.setWindowTitle('千牛编程思维')self.resize(800, 600)self.ui()def ui(self):self.label = QtWidgets.QLabel(self)self.label.setGeometry(20, 20, 300, 500)img = QtGui.QImage('Mona.jpg') # 读取图片self.label.setPixmap(QtGui.QPixmap.fromImage(img)) # 加入图片if __name__ == '__main__':app = QtWidgets.QApplication(sys.argv)Form = MyWidget()Form.show()sys.exit(app.exec())
使用 StyleSheet 设定 QLabel 样式
如果会使用网页 CSS 语法,就能透过 setStyleSheet() 设定 QLabel 样式,在设计样式上也较为弹性好用,下方的程序执行后,会套用 CSS 样式语法,实现一个黑色虚线外框的 QLabel ( 不支援 CSS3 相关语法 )。
from PyQt6 import QtWidgets, QtGui import sysapp = QtWidgets.QApplication(sys.argv)Form = QtWidgets.QWidget() Form.setWindowTitle('千牛编程思维') Form.resize(320, 240)label = QtWidgets.QLabel(Form) label.setText('hello world, how are you?') label.setGeometry(20, 20, 200, 150) label.setWordWrap(True) # 设定可以换行label.setStyleSheet('''background:#fff;color:#f00;font-size:20px;font-weight:bold;border:2px dashed #000;padding:20px;text-align:center; ''')Form.show() sys.exit(app.exec())
类写法:
from PyQt6 import QtWidgets, QtGui, QtCore import sysclass MyWidget(QtWidgets.QWidget):def __init__(self):super().__init__()self.setWindowTitle('千牛编程思维')self.resize(320, 240)self.ui()def ui(self):self.label = QtWidgets.QLabel(self)self.label.setText('hello world, how are you?')self.label.setGeometry(20, 20, 200, 150)self.label.setWordWrap(True) self.label.setStyleSheet('''background:#fff;color:#f00;font-size:20px;font-weight:bold;border:2px dashed #000;padding:20px;text-align:center;''')if __name__ == '__main__':app = QtWidgets.QApplication(sys.argv)Form = MyWidget()Form.show()sys.exit(app.exec())