06. 标签控件

一、标签控件

  QLabel 控件,又称为 标签控件,它主要用于显示用户不能编辑的文本,标识窗体上的对象(例如,给文本框、列表框添加描述信息等)。

  我们可以在终端中使用 pip 安装 pyside6 模块。

pip install pyside6
label = QLabel()

  创建好的标签控件,我们可以调用 show() 方法显示出来,但这样的话,标签控件会独立显示。如果,我们想标签控件显示在指定的窗口中,我们可以为标签控件调用 setParent(parent) 方法指定一个父窗口。如果父窗口显示的话,那么该标签控件也会显示出来。

label.setParent(w)

  我们可以在 Qt Designer 中设计器的属性编辑器中的 text 属性来设置标签控件的显示文本,也可以直接通过 Python 代码调用 QLabel 类的 setText(text) 方法来设置属性文本。

label.setText("标签的显示文本")

  以上的步骤,我们可以简化为一个步骤,即在创建标签控件的同时,指定它的显示文本和父窗口。

label = QLabel("我是一个标签", w)

  PySide6 中还支持标签中文本的对齐方式,主要用到 alignment 属性。在 Qt Designer 设计器的属性编辑器中展开 alignment 属性,可以看到有两个值,分别为:Horizontal Vertical

  其中,Horizontal 用来设置标签文本的水平对齐方式,取值 4 个:

Qt.AlignLeft       # 左对齐
Qt.AlignCenter     # 水平居中对齐
Qt.AlignRight      # 右对齐
Qt.AlignJustify    # 两端对齐

  Vertical 用来设置标签文本的垂直对齐方式,取值有 3 个:

Qt.AlignTop        # 顶部对齐
Qt.AlignVCenter    # 垂直居中对齐
Qt.AlignBottom     # 底部对齐

  如果使用 Python 代码设置 Label 标签文本的对齐方式,需要用到 QLabel 类的 setAlignment(arg__1) 方法。

label.setAlignment(Qt.AlignCenter | Qt.AlignVCenter)

  在标签宽度不足的情况下,系统会默认只显示部分文字。此时,我们可以设置标签文本换行显示。如果使用 Qt Designer 的话,只需要把标签控件的属性编辑器中的 wordWrap 属性的复选框勾选上即可。如果使用 Python 代码设置标签文本的换行显示,需要用到 QLabel 类的 setWordWrap(on) 方法。

label.setWordWrap(True)

  如果,我们获取标签的文本,可以通过使用 QLable 类的 text() 方法来获取文本。

text = label.text()

  我们还可以为标签设置超链接,在使用 QLable 类中的 setText(text) 方法时,使用 HTML 的 <a> 标签设置超链接文本,然后将 Label 标签中的 setOpenExternalLinks(open) 方法设置为 True,以便允许访问超链接。

label.setText("<a href='https://www.baidu.com'>百度</a>")

  我们还可以为标签设置显示图片,需要使用 QLable 类的 setPixmap(arg__1) 方法。该方法需要有一个 QPixmap 对象,表示图标对象。

from PySide6.QtGui import QPixmap
label.setPixmap(QPixmap("1.ico"))

  QLable 类的常用方法如下:

# 实例方法
text() -> str                                   # 获取QLabel的文字
setTextFormat(format:Qt.TextFormat) -> None     # 设置QLabel的文字格式
setParent(parent:QWidget) -> None               # 设置标签控件所在的父容器
setSelection(arg__1:int, arg__2:int) -> None    # 设置选中文字的范围
selectedText() -> str                           # 获取选中的文字
hasSelectedText() -> bool                       # 判断是否选中文字
setIndent(arg__1) -> None                       # 设置缩进
indent() -> int                                 # 获取缩进
pixmap() -> QPixmap                             # 获取QLabel的图片
setToolTip(arg__1:str) -> None                  # 设置标签的提示文字
setWordWrap(on:bool) -> None                    # 设置是否自动换行
setAlignment(aligement:Qt.Alignment) -> None    # 设置标签文字的对齐方式
setOpenExternalLinks(open:bool) -> None         # 设置是否打开外部链接
setFont(font:QFont) -> None                     # 设置标签文字的字体
font() -> QFont                                 # 获取标签文字的字体
setPalette(palette:QPalette) -> None            # 设置调色板
palette() -> QPalette                           # 获取调色板
setGeometry(rect:QRect) -> None                 # 设置标签的大小和位置
geometry() -> QRect                             # 获取标签的大小和位置
minimumSizeHint() -> QSize                      # 获取标签的最小尺寸
setScaledContents(arg__1:bool) -> None          # 设置显示的图片是否充满整个标签控件
setMargin(arg__1:int) -> None                   # 设置标签的边距
setBuddy(arg__1:QWidget) -> None                # 设置标签的伴随控件
buddy() -> QWidget                              # 获取标签的伴随控件

# 槽方法
setText(text:str) -> None                       # 设置显示的文字
setNum(num:Union[int,float]) -> None            # 设置显示的数字
clear() -> None                                 # 清空显示的内容
setPixmap(pixmap:QPixmap) -> None               # 设置显示的图片
setPicture(picture:QPicture) -> None            # 设置显示的图片
setMovie(movie:QMovie) -> None                  # 设置显示的动画
setEnabled(arg__1:bool) -> None                 # 设置标签控件是否可用

  QLable 类的常用信号有两个:linkActivatedlinkHoveredlinkActivated 信号会在当单击标签中嵌入的超链接时发送信号,linkHovered 信号会在鼠标指针滑过标签中嵌入的超链接时发射信号。如果我们希望在新窗口中打开这个超链接时,setOpenExternalLinks(open) 方法必须设置为 True

linkActivated(link)    # 单击标签中嵌入的超链接时发送信号
linkHovered(link)      # 鼠标指针滑过标签中嵌入的超链接时发射信号
import sys

from PySide6.QtWidgets import QApplication, QWidget
from PySide6.QtWidgets import QLabel
from PySide6.QtGui import QPixmap, QFont
from PySide6.QtCore import Qt, QRect

class MyWidget(QWidget):
    def __init__(self):
        # 1.调用父类Qwidget类的__init__()方法
        super().__init__()
        # 2.调用setupUi()方法初始化页面
        self.setup_ui()

    def setup_ui(self):
        # 1.设置窗口对象大小
        self.setFixedSize(600, 400)
        w = self.width()
        h = self.height()
        print(f"w: {w}, h: {h}")

        # 2.创建标签控件
        self.label1 = QLabel(self)
        self.label2 = QLabel(self)

        self.label1.setGeometry(QRect(0, 0, w, h))

        # 3.设置标签控件的图片
        self.label1.setPixmap(QPixmap("assets/images/1.jpg"))

        self.label2.setGeometry(QRect(w//2-150, 150, 300, 30))

        # 4.设置标签控件的字体
        font = QFont("黑体", pointSize=20)
        self.label2.setFont(font)

        # 5.设置要显示的文本
        self.label2.setText("<a href='https://www.baidu.com'>百度</a>")

        # 6.设置鼠标悬停时的提示信息
        self.label2.setToolTip("百度")

        # 7.设置标签文本的对齐方式
        self.label2.setAlignment(Qt.AlignmentFlag.AlignCenter)

        # 8.允许跳转外部网站,此时linkActivated信号无效
        self.label2.setOpenExternalLinks(True)

        # 9.定义信号与槽的连接
        self.label2.linkHovered.connect(self.horver)
        self.label2.linkActivated.connect(self.activated)


    def horver(self, link):
        print(f"欢迎查看【{link}】链接")

    def activated(self, link):
        print(f"你点击了【{link}】链接")

if __name__ == "__main__":
    # 1.创建一个QApplication类的实例
    app = QApplication(sys.argv)
    # 2.创建一个窗口
    window = MyWidget()
    # 3.展示窗口
    window.show()
    # 4.进入程序的主循环并通过exit()函数确保主循环安全结束
    sys.exit(app.exec())
posted @   星光映梦  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示