PySide6-控件教程-001-QLabel标签控件-文本对齐、缩进、换行

QLabel 标签控件

本文摘录自我的开源教程:PySide6 代码式教程 - QLabel,CSDN 平台仅做镜像,答疑、纠错请至 GitHub 提交 issue。

标签控件用于在界面上显示文字、图像等

官方文档:https://doc.qt.io/qtforpython/PySide6/QtWidgets/QLabel.html

继承自 QFrame

有两种构造函数,可以传入文本、父控件、Qt.WindowFlags(一般不用)三个参数:

  • __init__(self, parent: Optional[QtWidgets.QWidget] = None, f: Qt.WindowFlags = Default(Qt.WindowFlags))
  • __init__(self, text: str, parent: Optional[QtWidgets.QWidget] = None, f: Qt.WindowFlags = Default(Qt.WindowFlags))

QLabel 的大小会根据其内容自动调整,也可以手动指定

文本对齐

.setAlignment(Qt.Alignment) 设置文本对齐方式,详见下方Qt.Alignment

.alignment() -> Qt.Alignment 获取文本对齐方式

默认对齐方式为 Qt.AlignLeft | Qt.AlignVCenter,即水平靠左、垂直居中对齐

Qt.AlignmentFlag 中又分为水平对齐方式与垂直对齐方式,具体有如下数种:
https://doc.qt.io/qt-6/qt.html#AlignmentFlag-enum

水平对齐:

  • Qt.AlignLeft 与左边缘对齐
  • Qt.AlignRight 与右边缘对齐
  • Qt.AlignHCenter 在可用空间中水平居中
  • Qt.AlignJustify 两端对齐(尽可能使文字占满横向空间)

垂直对齐:

  • Qt.AlignTop 与顶部对齐
  • Qt.AlignBottom 与底部对齐
  • Qt.AlignVCenter 在可用空间中垂直居中
  • Qt.AlignBaseline 与基线对齐

若需同时设置水平、垂直两个维度的对齐方式,只需将两个Flags用或运算符连接,例如:
Qt.AlignCenter 等价于 Qt.AlignVCenter | Qt.AlignHCenter

缩进

.setIndent(indent: int) 设置缩进,默认为-1,即不进行缩进
.indent() -> int 获取缩进数

缩进的方向与对齐方向有关,Qt.AlignLeft则缩进出现在左边缘,Qt.AlignTop则出现在上边缘,以此类推

如果 indent 为负数,或者没有设置缩进,则label计算有效缩进的方法如下:
若 frameWidth() 为0,则有效缩进变为0;若 frameWidth() 大于0,则有效缩进为控件当前 font()
x 字母宽度的一半

换行

QLabel 可以开启自动换行功能,即在需要时从单词之间换行

  • .setWordWrap(on: bool) 设置是否开启自动换行,默认关闭
  • .wordWrap() -> bool 获取是否开启自动换行

示例代码

本节对应示例代码如下,在已经正确安装 PySide6 的前提下可直接在本地运行:

# https://github.com/muziing/PySide6-Code-Tutorial
import sys

from PySide6 import QtWidgets
from PySide6.QtCore import Qt


description = """QLabel is used for displaying text or an image. No user interaction functionality is provided.
The visual appearance of the label can be configured in various ways,
and it can be used for specifying a focus mnemonic key for another widget."""


class MyWidget(QtWidgets.QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.setWindowTitle("QLabel-文本操作")
        self.resize(800, 600)
        self.setup_ui()

    def setup_ui(self) -> None:
        """设置界面与测试功能"""
        label = QtWidgets.QLabel(self)
        # 手动设置尺寸,而非由内容自动设置
        label.resize(300, 300)
        label.move((self.width() - label.width()) // 2, (self.height() - label.height()) // 2)
        label.setStyleSheet("background-color: cyan;")

        # 注意测试以下三种功能时,会相互影响。
        # 如改变对齐方式会改变缩进方向、开启自动换行时每一行都会受到缩进影响等。

        # ==========测试对齐方式============
        label.setText("PySide6 Code Tutorial")  # 建议测试对齐方式功能时使用这个短内容文本
        # label.setAlignment(Qt.AlignTop)  # 上对齐
        # label.setAlignment(Qt.AlignJustify)  # 两侧对齐

        # label.setAlignment(Qt.AlignCenter)  # 居中对齐,等价于下一行
        label.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)  # 居中对齐

        # =========测试缩进=================
        # label.setText(description)
        # label.setIndent(30)  # 设置缩进,缩进方向对对齐方向相关
        print(label.indent())

        # =========测试自动换行=============
        # label.setText(description)
        label.setWordWrap(True)  # 若关闭自动换行,则超出单行的部分无法显示
        print(label.wordWrap())


# https://github.com/muziing/PySide6-Code-Tutorial
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = MyWidget()
    window.show()
    sys.exit(app.exec())

关于 PySide6-Code-Tutorial

  • 前身为已有近 500 Stars 的爆火教程 PyQt_practice
  • 每个模块(.py文件)都可运行,展示了各种控件的各种功能属性作用,代码中有注释讲解
  • 使用最新的 Python 与 PySide 版本(目前为3.10与6.3)
  • 已经涵盖数十个常用控件,且仍在快速增加中

原版教程地址:https://github.com/muziing/PySide6-Code-Tutorial

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值