QLabel 标签控件
- 描述
- 提供了文本或图像的显示
- 普通文本
- 数字
- 富文本
- QLabel-超链接
- 图片
- 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())
- 设置内容
setText(str) # 设置标签文本内容 setPixmap(QPixmap) # 通过QPixmap对象设置标签内容为图片
- 对齐
setAlignment(Qt.Alignment) # 设置控件内容对齐方式 alignment() -> Qt.Alignment # 获取控件内容对齐方式 # 参数:Qt.Alignment # Qt.AlignTop # 垂直居上 # Qt.AlignBottom # 垂直居下 # Qt.AlignVCenter # 垂直居中 # Qt.AlignRight # 水平居右 # Qt.AlignLeft # 水平居左 # Qt.AlignCenter # 水平居中 # 同时设置水平方向和垂直方向则通过按位或("|")连接即可
- 缩进和边距
setIndent(int) # 设置内容左右缩进,根据对齐方式确定左右 indent() -> int # 获取内容左右缩进 setMargin(int) # 设置控件内容区域与边框四周的边距 margin() -> int # 获取控件内容区域与边框四周的边距
- 文本格式
setTextFormat(Qt.TextFormat) # 设置文本内容显示格式 textFormat() # 参数:Qt.TextFormat # Qt.PlainText # 文本字符串被解释为纯文本字符串。 # Qt.RichText # 文本字符串被解释为富文本字符串。有关富文本的定义,请参阅支持的HTML子集。 # Qt.AutoText # 自动识别是否是富文本
- 绑定小伙伴
# 给标签控件绑定小伙伴之后,通过按下标签控件设置的快捷键,可以让其小伙伴获取到焦点 setBuddy(QWidget buddy) # 给标签控件绑定一个小伙伴控件,标签控件的快捷键会作用在小伙伴身上 buddy() -> QWidget # 获取标签控件的小伙伴
- 内容缩放(针对于图片有效)
setScaledContents(bool) # 设置是否缩放内容, 适应控件大小(仅针对于图片有效) hasScaledContents() -> bool # 获取是否设置缩放适应控件大小 # 图片按照控件尺寸调整,图片会失去纵横比(导致图片变形)
- 文本交互标志
setTextInteractionFlags(Qt.TextInteractionFlags flags) # 设置文本控件的交互标志 textInteractionFlags() -> Qt.TextInteractionFlags # 获取文本控件的交互标志 # 参数:Qt.TextInteractionFlag # Qt.NoTextInteraction # 不可能与文本进行交互。 # Qt.TextSelectableByMouse # 可以使用鼠标选择文本并使用上下文菜单(右键菜单)或标准键盘快捷键将其复制到剪贴板。 # Qt.TextSelectableByKeyboard # 可以使用键盘上的光标键选择文本。显示文本光标。 # Qt.LinksAccessibleByMouse # 可以使用鼠标突出显示链接(激活需要设置允许打开外部链接) # Qt.LinksAccessibleByKeyboard # 可以使用选项卡(Tab键)聚焦链接(使用enter激活需要设置允许打开外部链接) # Qt.TextEditable # 该文字完全可编辑。需要同时设置可被选中才可以被编辑 # Qt.TextEditorInteraction # 文本编辑器的默认值。 # 等同于同时设置:TextSelectableByMouse | TextSelectableByKeyboard | TextEditable # Qt.TextBrowserInteraction # QTextBrowser的默认值。 # 等同于同时设置:TextSelectableByMouse | LinksAccessibleByMouse | LinksAccessibleByKeyboard
- 外部链接
setOpenExternalLinks(bool open) # 是否允许打开外部链接(超链接) # 要打开超级链接还需要同时设置文本交互标志为 Qt.LinksAccessibleByMouse 或 Qt.LinksAccessibleByKeyboard # 当设置了文本交互标志位文字可编辑(setTextInteractionFlags(Qt.TextEditable))时,该设置将无效 openExternalLinks() -> bool # 获取是否设置可以打开外部链接
- 选中文本
setSelection(int start, int length) # 设置选中文本start开始索引,length指定选中几位 hasSelectedText() -> bool # 判断是否选中文本 selectedText() -> str # 获取选中的文本 selectionStart() -> int # 获取选中文本的起始索引号
- 单词换行
setWordWrap(bool on) # 设置单个单词是否允许换行 wordWrap() -> bool # 获取单个单词是否允许换行 # 通过'\n'.join(str)的方式可以将整个文本纵向排列
- 内容操作
- 文本字符串
text() -> str # 获取标签控件的文本内容 setText(QString) # 设置标签控件显示文本内容 # 通过html标签添加图片 setText("<img src='./images/home.jpg' width=60 height=60>") # 通过html标签添加超链接 setText("<a href='https://www.baidu.com'>百度一下</a>")
- 数值数据
setNum(int num) # 设置int类型数据 setNum(double num) # 设置double类型数据
- 图形图像
setPicture(QPicture) # 通过QPicture设置图形图像,会保持绘画属性 picture() -> QPicture # 获取图形图像,返回QPicture对象 # QPicture对象需要先设置画家、画笔操作 setPixmap(QPixmap) # 通过QPixmap对象设置图形图像 pixmap() -> QPixmap # 获取图形图像,返回QPixmap对象
- 动图/小电影
setMovie(QMovie movie) # 通过QMovie对象设置动画,此类用于显示没有声音的简单动画,不能放电影等 movie() -> QMovie # 获取动画,返回QMovie对象 # QMovie对象常用操作 setScaledSize(QSize) # 设置屏幕大小 setPaused(bool) -> void # 设置是否暂停 setSpeed(int percentSpeed) # 设置播放倍速(100为1倍速) # 例如:setSpeed(200) 设置播放速度为两倍速 start() # 开始播放,动图添加之后需要设置播放才能显示 stop() # 暂停播放
- 文本字符串
- 清空
clear() # 清空内容
- 可用信号
linkHovered(link_str) # 鼠标放在超链接上时发射该信号,传递超链接url # 鼠标滑入会传递参数,滑出不会传递参数 linkActivated(link_str) # 超链接被激活时发射该信号,传递超链接url # 当设置了允许打开外部链接(setOpenExternalLinks(True))时,将不会发射该信号
- 示例代码
- 示例1:QLabel-功能作用及可用信号
from PyQt5.Qt import * import sys class Windows(QWidget): def __init__(self): super().__init__() self.setWindowTitle('QLabel-功能作用') self.resize(500, 800) self.widget_list() def widget_list(self): self.add_widget() def add_widget(self): pass # 构造方法 # label1 = QLabel(self) # label2 = QLabel('标签控件', self) # # label1.move(50, 50) # label1.setText('这是标签控件1') # label2.move(50, 100) pass # 对齐方式 # label = QLabel('标签控件对齐方式', self) # label.resize(300, 300) # label.setStyleSheet('background-color: cyan;') # label.move(50, 50) # label.setAlignment(Qt.AlignTop) # 垂直居上 # label.setAlignment(Qt.AlignBottom) # 垂直居下 # label.setAlignment(Qt.AlignVCenter) # 垂直居中 # label.setAlignment(Qt.AlignRight) # 水平居右 # label.setAlignment(Qt.AlignLeft) # 水平居左 # label.setAlignment(Qt.AlignCenter) # 水平居中 pass # 缩进和边距 # 设置缩进 # label1 = QLabel('label1缩进设置', self) # label1.move(50, 50) # label1.resize(200, 100) # label1.setStyleSheet('background-color: cyan;') # label1.setAlignment(Qt.AlignLeft) # # label1.setIndent(20) # 设置边距 # label2 = QLabel('label2边距设置', self) # label2.move(50, 170) # label2.resize(200, 100) # label2.setStyleSheet('background-color: yellow;') # label2.setAlignment(Qt.AlignLeft) # # label2.setMargin(20) pass # 设置文本格式 # label1 = QLabel(self) # label2 = QLabel(self) # label3 = QLabel(self) # # label1.resize(400, 100) # label2.resize(400, 100) # label3.resize(400, 100) # label1.move(50, 50) # label2.move(50, 170) # label3.move(50, 290) # # label1.setStyleSheet('background-color: cyan;') # label2.setStyleSheet('background-color: yellow;') # label3.setStyleSheet('background-color: green;') # # label1.setText('<a href="https://www.baidu.com">百度一下</a>') # label2.setText('<a href="https://www.baidu.com">百度一下</a>') # label3.setText('<a href="https://www.baidu.com">百度一下</a>') # # label1.setTextFormat(Qt.PlainText) # 设置文本字符串被解释为纯文本字符串 # label2.setTextFormat(Qt.RichText) # 文本字符串被解释为富文本字符串 # label3.setTextFormat(Qt.AutoText) # 自动识别是否是富文本 pass # 绑定小伙伴 # 创建QLabel对象的同时设置文本内容和快捷键字母(ALT+字母) # label1 = QLabel('账号(&U):', self) # label2 = QLabel('账号(&M):', self) # led1 = QLineEdit(self) # led2 = QLineEdit(self) # # label1.move(100, 100) # led1.move(180, 100) # label2.move(100, 150) # led2.move(180, 150) # # label1.setBuddy(led1) # 为label1绑定小伙伴 # label2.setBuddy(led2) # 为label2绑定小伙伴 pass # 设置内容缩放(仅对图片有效) # label1 = QLabel(self) # label2 = QLabel(self) # # label1.resize(400, 200) # label2.resize(400, 200) # # label1.move(50, 50) # label2.move(50, 270) # # label1.setStyleSheet('background-color: cyan;') # label2.setStyleSheet('background-color: yellow;') # # label1.setPixmap(QPixmap('../images/jpg/1.jpg')) # label2.setPixmap(QPixmap('../images/jpg/1.jpg')) # # label2.setScaledContents(True) # 设置开启图片根据控件大小自动缩放 pass # 文本交互标志(是否允许被选中/编辑) # label1 = QLabel(self) # label2 = QLabel(self) # label3 = QLabel(self) # label4 = QLabel(self) # label5 = QLabel(self) # label6 = QLabel(self) # # label1.resize(400, 50) # label2.resize(400, 50) # label3.resize(400, 50) # label4.resize(400, 50) # label5.resize(400, 50) # label6.resize(400, 50) # # label1.move(50, 50) # label2.move(50, 110) # label3.move(50, 170) # label4.move(50, 230) # label5.move(50, 290) # label6.move(50, 350) # # label1.setStyleSheet('background-color: cyan;') # label2.setStyleSheet('background-color: cyan;') # label3.setStyleSheet('background-color: cyan;') # label4.setStyleSheet('background-color: cyan;') # label5.setStyleSheet('background-color: cyan;') # label6.setStyleSheet('background-color: cyan;') # # label1.setText('<a href="https://www.baidu.com">百度一下</a>') # label2.setText('<a href="https://www.baidu.com">百度一下</a>') # label3.setText('<a href="https://www.baidu.com">百度一下</a>') # label4.setText('<a href="https://www.baidu.com">百度一下</a>') # label5.setText('<a href="https://www.baidu.com">百度一下</a>') # label6.setText('<a href="https://www.baidu.com">百度一下</a>') # # label6.setText('百度一下') # # label1.setTextInteractionFlags(Qt.NoTextInteraction) # label2.setTextInteractionFlags(Qt.TextSelectableByMouse) # label3.setTextInteractionFlags(Qt.TextSelectableByKeyboard) # label4.setTextInteractionFlags(Qt.LinksAccessibleByMouse) # label5.setTextInteractionFlags(Qt.LinksAccessibleByKeyboard) # label6.setTextInteractionFlags(Qt.TextEditable | Qt.TextSelectableByKeyboard) # # # 允许打开外部链接(需要同时设置允许被选中才有效) # label1.setOpenExternalLinks(True) # label2.setOpenExternalLinks(True) # label3.setOpenExternalLinks(True) # label4.setOpenExternalLinks(True) # label5.setOpenExternalLinks(True) # label6.setOpenExternalLinks(True) pass # 设置选中文本(需要设置文本交互标志为可被选中状态) # label1 = QLabel('设置选中文本1', self) # label2 = QLabel('设置选中文本2', self) # # label1.resize(400, 50) # label2.resize(400, 50) # # label1.move(50, 50) # label2.move(50, 110) # # # label1.setTextInteractionFlags(Qt.TextSelectableByMouse) # label1.setTextInteractionFlags(Qt.TextSelectableByKeyboard) # label1.setSelection(1, 3) # label1.setFocus() pass # 设置单词允许换行 # lab1 = QLabel('设置单词允许换行'*5, self) # label2 = QLabel('asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf', self) # # lab1.resize(150, 50) # label2.resize(150, 50) # # lab1.move(50, 50) # label2.move(50, 110) # # lab1.setStyleSheet('background-color: cyan;') # label2.setStyleSheet('background-color: cyan;') # # lab1.setWordWrap(True) pass # 内容操作 # label1 = QLabel(self) # label2 = QLabel(self) # label3 = QLabel(self) # label4 = QLabel(self) # label5 = QLabel(self) # label6 = QLabel(self) # label7 = QLabel(self) # label8 = QLabel(self) # # label1.resize(400, 50) # label2.resize(400, 50) # label3.resize(400, 90) # label4.resize(400, 50) # label5.resize(400, 50) # label6.resize(400, 100) # label7.resize(400, 100) # label8.resize(400, 200) # # label1.move(50, 10) # label2.move(50, 70) # label3.move(50, 130) # label4.move(50, 230) # label5.move(50, 290) # label6.move(50, 350) # label7.move(50, 460) # label8.move(50, 580) # # label1.setStyleSheet('background-color: cyan;') # label2.setStyleSheet('background-color: cyan;') # label3.setStyleSheet('background-color: cyan;') # label4.setStyleSheet('background-color: cyan;') # label5.setStyleSheet('background-color: cyan;') # label6.setStyleSheet('background-color: cyan;') # label7.setStyleSheet('background-color: cyan;') # label8.setStyleSheet('background-color: cyan;') # # label1.setText('内容操作') # label2.setText('<a href="https://www.baidu.com">百度一下</a>') # label3.setText("<img src='../images/jpg/1.jpg'>") # label4.setNum(888) # label5.setNum(999.999) # # label6.setPixmap(QPixmap("../images/jpg/1.jpg")) # # pic = QPicture() # painter = QPainter(pic) # painter.setBrush(QBrush(QColor(100,200,100))) # painter.drawEllipse(0,0,200,200) # label7.setPicture(pic) # # movie = QMovie("../images/gif/1.gif") # label8.setMovie(movie) # # movie.start() # 开始播放 # movie.setSpeed(2000) # 设置播放倍速 # movie.setScaledSize(QSize(200,200)) # 设置屏幕大小 # movie.setPaused(True) # 设置是否暂停 # movie.stop() # 暂停播放 pass # 清空内容 # labe = QLabel('清空内容', self) # btn = QPushButton('清空', self) # labe.move(50, 50) # btn.move(50, 100) # # btn.clicked.connect(labe.clear) pass # 可用信号 label1 = QLabel(self) label2 = QLabel(self) label1.resize(400, 50) label2.resize(400, 50) label1.move(50, 50) label2.move(50, 110) label1.setStyleSheet('background-color: cyan;') label2.setStyleSheet('background-color: cyan;') label1.setText('<a href="https://www.baidu.com">百度一下</a>') label2.setText('<a href="https://www.baidu.com">百度一下</a>') label1.linkHovered.connect(lambda a:print('鼠标滑过了超链接', a)) label2.linkActivated.connect(lambda a:print('超链接被点击了', a)) if __name__ == '__main__': app = QApplication(sys.argv) window = Windows() window.show() sys.exit(app.exec_())