1 QLabel控件作用?
QLabel
控件用于显示不可编辑的文本或图片,也用于设置超链接、富文本,以及作为其他控件的;QLabel
控件是PyQt5
是一个非常常用又非常基础的一个控件。
2 QLabel源码
- 源码路径:
PyQt5QtWidgetsQLabel.py
- 部分源码:
class QLabel(QFrame):
"""
QLabel(parent: QWidget = None, flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags())
QLabel(str, parent: QWidget = None, flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags())
"""
def actionEvent(self, *args, **kwargs): # real signature unknown
pass
def alignment(self): # real signature unknown; restored from __doc__
""" alignment(self) -> Qt.Alignment """
pass
def buddy(self): # real signature unknown; restored from __doc__
""" buddy(self) -> QWidget """
return QWidget
def changeEvent(self, QEvent): # real signature unknown; restored from __doc__
""" changeEvent(self, QEvent) """
pass
def childEvent(self, *args, **kwargs): # real signature unknown
pass
def clear(self): # real signature unknown; restored from __doc__
""" clear(self) """
pass
3 常用方法
3.1 常用方法
方法 | 说明 |
---|---|
| 按固定值方法对齐文本 |
| 设置文本缩进值 |
| 设置 |
| 获取 |
| 设置 |
| 返回所选择的字符 |
| 设置 |
| 设置是否换行 |
3.2 关于setAlignment()
- 源码内容:
def setAlignment(self, Union, Qt_Alignment=None, Qt_AlignmentFlag=None): # real signature unknown; restored from __doc__
""" setAlignment(self, Union[Qt.Alignment, Qt.AlignmentFlag]) """
pass
- 常用方法:
方法 | 说明 |
---|---|
| 水平方向靠左对齐 |
| 水平方向靠右对齐 |
| 水平方向居中对齐 |
| 水平方向调整间距两端对齐 |
| 垂直方向靠上对齐 |
| 垂直方向靠下对齐 |
| 垂直方向居中对齐 |
4 QLabel常用的信号(事件)
- 当鼠标滑过
QLabel
控件时触发:linkHovered
; - 当鼠标单击
QLabel
控件时触发:linkActivated
。
5 示例说明
5.1 文本标签
代码语言:python代码运行次数:0复制 # 文本标签
lab_1 = QLabel(self)
lab_1.setText("我的应用")
lab_1.setAutoFillBackground(True) # 自动填充背景
pat = QPalette()
pat.setColor(QPalette.Window, Qt.yellow)
lab_1.setPalette(pat)
lab_1.setAlignment(Qt.AlignCenter)
5.2 文本链接
代码语言:python代码运行次数:0复制# 文本链接标签
lab_2 = QLabel(self)
lab_2.setText("<a href='#'>山水美景</a>")
5.3 图片标签
代码语言:python代码运行次数:0复制# 图片标签
lab_3 = QLabel(self)
lab_3.setAlignment(Qt.AlignCenter)
lab_3.setToolTip("这是一个图片")
lab_3.setPixmap(QPixmap("F:pyqt_studyimages壁纸13.jpg"))
5.4 超链接标签
代码语言:python代码运行次数:0复制# 超链接标签
lab_4 = QLabel(self)
lab_4.setText("<a href='xxxxx'>景色宜人</a>")
lab_4.setAlignment(Qt.AlignRight)
lab_3.setToolTip("这是链接")
5.5 窗口添加控件
代码语言:python代码运行次数:0复制# 窗口中添加控件
v = QVBoxLayout()
v.addWidget(lab_1)
v.addWidget(lab_2)
v.addWidget(lab_3)
v.addWidget(lab_4)
5.6 绑定信号和槽
代码语言:python代码运行次数:0复制# 信号事件
lab_2.linkHovered.connect(self.link_H)
lab_4.linkActivated.connect(self.link_C)
self.setLayout(v)
5.7 定义事件
代码语言:python代码运行次数:0复制def link_H(self):
print("当鼠标滑过label_2时,触发事件")
def link_C(self):
print("当鼠标单击label_4时,触发事件")
6 完整源码
代码语言:python代码运行次数:0复制# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/11/10
# 文件名称:test025_ToolTip.py
# 作用:Qlabel控件的使用
import sys
import ctypes
from PyQt5.QtWidgets import QApplication, QMainWindow, QToolTip, QVBoxLayout, QWidget, QLabel
from PyQt5.QtGui import QFont
from PyQt5.QtGui import QIcon
from PyQt5.QtGui import QPalette, QPixmap
from PyQt5.QtCore import Qt
myappid = "wo de app"
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)
class MyQlabel(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
# 设置窗口标题
self.setWindowTitle("Qlabel应用")
# 设置窗口图标
self.setWindowIcon(QIcon('F:pyqt_studyimagesmyiconhongbao.svg'))
# 文本标签
lab_1 = QLabel(self)
lab_1.setText("我的应用")
lab_1.setAutoFillBackground(True) # 自动填充背景
pat = QPalette()
pat.setColor(QPalette.Window, Qt.yellow)
lab_1.setPalette(pat)
lab_1.setAlignment(Qt.AlignCenter)
# 文本链接标签
lab_2 = QLabel(self)
lab_2.setText("<a href='#'>山水美景</a>")
# 图片标签
lab_3 = QLabel(self)
lab_3.setAlignment(Qt.AlignCenter)
lab_3.setToolTip("这是一个图片")
lab_3.setPixmap(QPixmap("F:pyqt_studyimages壁纸13.jpg"))
# 超链接标签
lab_4 = QLabel(self)
lab_4.setText("<a href='xxxxx'>景色宜人</a>")
lab_4.setAlignment(Qt.AlignRight)
lab_3.setToolTip("这是链接")
# 窗口中添加控件
v = QVBoxLayout()
v.addWidget(lab_1)
v.addWidget(lab_2)
v.addWidget(lab_3)
v.addWidget(lab_4)
# 信号事件
lab_2.linkHovered.connect(self.link_H)
lab_4.linkActivated.connect(self.link_C)
self.setLayout(v)
def link_H(self):
print("当鼠标滑过label_2时,触发事件")
def link_C(self):
print("当鼠标单击label_4时,触发事件")
if __name__ == "__main__":
app = QApplication(sys.argv)
win = MyQlabel()
win.show()
sys.exit(app.exec_())
7 效果图片
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!