QLabel 标签
QLabel 是 PyQt6 里用来建立文字或图片的标签控件,这篇教学会介绍如何在 PyQt6 窗口里加入 QLabel 标签,并进行像是文字字型、大小、颜色和位置...等参数设定。
快速预览:
加入 QLabel 标签
QLabel 位置设定
QLabel 文字设定
QLabel 加入图片
使用 StyleSheet 设定 QLabel 样式
加入 QLabel 标签
建立 PyQt6 窗口物件后,透过 QtWidgets.QLabel(widget
) 方法,就能在指定的控件中建立标签,下方的程序执行后,会加入一个 QLabel 标签,并使用 setText() 方法加入文字。
from PyQt6 import QtWidgets import sys app = 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 QtWidgets import 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 QtWidgets import sys app = 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 QtWidgets import sys class 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, QtCore import sys app = 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, QtCore import sys class 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, QtGui import sys app = 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, QtCore import sys class 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 sys app = 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 sys class 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())