在常用控件中包含11个常用控件
4.2.1标签:Label
Label(标签)控件属于QLabel类,可以显示文本(纯文本或者丰富文本)、链接或图片,也可以放置一个GIF动画。QLabel类中的常用方法如表。
QLabel类中的常用信号如表:
linkActivated:当单击标签中嵌入的超链接,希望在新窗口中打开这个超链接时,setOpenExtemalLinks特性必须设置为ture;
linkHovered:当鼠标指针滑过标签中嵌入的超链接时,需要用槽函数与这个信号进行绑定
【例4.1】QLabel标签测试。运行程序如图:
# 导入 PyQt6 中的 QtWidgets 模块,这个模块包含了一系列创建 GUI 应用的基础组件
from PyQt6.QtWidgets import *
# 导入 PyQt6 中的 QtCore 模块,这个模块包含了一些核心的非 GUI 功能,如事件处理、时间和线程等
from PyQt6.QtCore import Qt
# 导入 PyQt6 中的 QtGui 模块,这个模块包含了一些 GUI 相关的功能,如图像处理、颜色管理等
from PyQt6.QtGui import QPixmap, QPalette
import sys # 导入 Python 的 sys 模块,用于处理与 Python 解释器交互或获取解释器信息的功能
# 定义一个名为 MyWidget 的类,继承自 QWidget,QWidget 是 PyQt6 中所有用户界面对象的基类
class MyWidget(QWidget):
def __init__(self):
super().__init__() # 调用父类 QWidget 的构造函数,初始化 MyWidget 对象
self.setWindowTitle("QLabel测试") # 设置窗口的标题为 "QLabel测试"
# 创建四个 QLabel 对象,并将它们添加到 MyWidget 对象中
label1 = QLabel(self)
label2 = QLabel(self)
label3 = QLabel(self)
label4 = QLabel(self)
# 设置 label1 的文本,并允许用户通过鼠标选择文本内容
label1.setText("初始文本标签")
label1.setTextInteractionFlags(Qt.TextInteractionFlag.TextSelectableByMouse)
# 设置 label2 的文本,并设置文本的颜色为红色,字体大小为6,文本居中对齐
# 设置背景颜色为白色,并允许背景色自动填充
label2.setText('<font size="6" color="red">红色3号字文本标签</font>')
label2.setAlignment(Qt.AlignmentFlag.AlignCenter)
label2.setAutoFillBackground(True)
palette = QPalette() # 创建一个调色板对象
palette.setColor(QPalette.ColorRole.Window, Qt.GlobalColor.white) # 设置窗口背景色为白色
label2.setPalette(palette) # 将调色板应用到 label2 上
# 设置 label3 的提示文本,并为其设置一张图片
# 当点击图片时,会触发 clickedFunc 函数
label3.setToolTip('图片标签...')
label3.setPixmap(QPixmap("E:\PyCode\Pyqt6\ProjectFile04\images\荷花.jpg"))
label3.linkActivated.connect(self.clickedFunc)
# 设置 label4 的文本为一个超链接
# 设置文本右对齐,并允许打开外部链接
# 当鼠标滑过超链接时,会触发 hoveredFunc 函数
label4.setText("<a href='http://www.163.com/'>网易超链接标签</a>")
label4.setAlignment(Qt.AlignmentFlag.AlignRight)
label4.setOpenExternalLinks(True)
label4.linkHovered.connect(self.hoveredFunc)
# 创建一个垂直布局对象
vbox = QVBoxLayout()
# 将四个标签按照垂直顺序添加到布局中
vbox.addWidget(label1)
vbox.addWidget(label2)
vbox.addWidget(label3)
vbox.addStretch() # 添加一个可伸缩的空间,用于调整布局中的间距
vbox.addWidget(label4)
# 将布局应用到 MyWidget 对象上
self.setLayout(vbox)
# 定义 hoveredFunc 函数,当鼠标滑过 label4 时会被调用
def hoveredFunc(self):
print("鼠标滑过标签4...")
# 定义 clickedFunc 函数,当点击 label3 的图片时会被调用
def clickedFunc(self):
print("鼠标点击标签3...")
# 判断是否是直接运行此 Python 脚本
if __name__ == "__main__":
# 创建一个 QApplication 对象,它是 GUI 应用的主控对象
app = QApplication(sys.argv)
# 创建一个 MyWidget 对象
w = MyWidget()
# 显示 MyWidget 窗口
w.show()
# 进入应用的主事件循环,等待用户操作
sys.exit(app.exec())
表4.3 QLabel类常用方法
方法 | 描述 |
界面设置:alignment 设置方法:setAlignment(Qt.AlignmentFlag.x) | 设置文本对齐 水平的(x): 左对齐:AlignLeft 右对齐:AlignRight 水平中心对齐:AlignCenter 端对齐:AlignJustify 垂直的(x): 顶部对齐:AlignTop 底部对齐:AlignBottom 垂直中心对齐:AlignVCenter |
界面设置:indent 设置方法:setIndent(n) | 设置文本缩进值 n=-1(默认) |
界面设置:pixmap 设置方法:setPixmap(QPixmap对象名) 设置方法:setMovie(QMovie对象名) | 设置显示一个Pixmap图片 QPixmap对象名= QPixmap(图片文件名),图片文件可以是jpg、png、ico和gif QMovie对象名= QMovie(gif动画文件名) |
界面设置:text 设置方法:setText(字符串) 获取方法:text() | 设置标签内容为指定字符串 字符串可以是纯文本或者是HTML格式文本 |
界面设置:buddy 设置方法:setBuddy() | 设置助记符及buddy(伙伴) 即使用QLabel设置快捷键,会在快捷键后将焦点设置到其buddy上,这里用到了QLabel的交互控件功能。此外,buddy可以是任何一个Widget控件。使用setBuddy(QWidget*)设置,其QLabel必须是文本内容,并且使用“&”符号设置了助记符 |
界面设置:wordWrap 设置方法:setWordWrap(逻辑值) | 设置是否延单词边界换行 逻辑值=True为换行,逻辑值=Flase为不换行(默认) |
获取方法:selectedText() | 获得所选择的字符 |
设置方法:setOpenExternlLinks(逻辑值) | 设置允许访问超链接。 |
功能:
- label1:显示普通文本标签,文本内容可以通过鼠标选择。
- label2:控制文本的颜色和背景颜色,文本居中显示。
- label3:显示图片,并关联了点击事件的槽函数。
- label4:显示为超链接标签,鼠标滑过时执行关联槽函数,并且允许打开外部链接。
布局和控件:
- 布局:使用
QVBoxLayout
(垂直布局),将四个QLabel
控件按照垂直方向排列。 - 控件:
QLabel
:用于显示文本或图片。QPixmap
:用于加载图片,并设置给QLabel
。
关键语句:
设置label1的文本选择功能:
-
label1.setTextInteractionFlags(Qt.TextInteractionFlag.TextSelectableByMouse)
这行代码允许用户通过鼠标选择label1中的文本。
设置label2的文本颜色、背景颜色和对齐方式:
label2.setText('<font size="6" color="red">红色3号字文本标签</font>')
label2.setAlignment(Qt.AlignmentFlag.AlignCenter)
palette = QPalette()
palette.setColor(QPalette.ColorRole.Window, Qt.GlobalColor.white)
label2.setPalette(palette)
这些代码设置了label2的文本为红色,字体大小为6,文本居中对齐,并设置了背景颜色为白色。
设置label3的图片和点击事件:
label3.setPixmap(QPixmap("images/荷花.jpg"))
label3.linkActivated.connect(self.clickedFunc)
这里加载了一张名为“荷花.jpg”的图片并设置给label3,同时连接了label3的点击事件到clickedFunc
槽函数。
设置label4的超链接和鼠标滑过事件:
label4.setText("<a href='http://www.163.com/'>网易超链接标签</a>")
label4.setOpenExternalLinks(True)
label4.linkHovered.connect(self.hoveredFunc)
这些代码设置了label4的文本为超链接,允许打开外部链接,并连接了鼠标滑过事件到hoveredFunc
槽函数。
布局设置:
vbox = QVBoxLayout()
# ...
vbox.addWidget(label4)
self.setLayout(vbox)
使用QVBoxLayout
创建垂直布局,并将四个QLabel
添加到布局中,最后将这个布局设置为窗口的布局。
槽函数定义:
def hoveredFunc(self):
print("鼠标滑过标签4...")
def clickedFunc(self):
print("鼠标点击标签3...")
-
这两个函数定义了当鼠标滑过label4和点击label3时分别执行的操作。
整体而言,这段代码通过PyQt6构建了一个具有多个标签控件的简单界面,展示了文本样式、图片加载、链接跳转、信号槽机制等PyQt6的基本用法。
以上解析部分参考文心一言,有不对的地方请指出哦~互相交流学习,共同进步~~